【发布时间】:2011-01-13 11:19:31
【问题描述】:
我一直在为这个问题摸不着头脑。假设我做了一个扩展方法,按日期对项目列表进行分组,我想更改可能的分组,以便结果可以按日、周或月分组。
我想出了以下内容,但我不断收到以下错误:
方法 'System.Object DynamicInvoke(System.Object[])' 不支持 SQL 转换
方法:
public static IQueryable<IGrouping<MonthDateGroup, T>> GroupByDate<T>(
this IQueryable<T> items,
DateGroupFrequency grouping,
Expression<Func<T, DateTime?>> func)
{
var selector = func.Compile();
IQueryable<IGrouping<MonthDateGroup, T>> grouped = null;
if (grouping == DateGroupFrequency.Daily)
{
grouped = from a in items
let date = selector(a).Value
group a by new MonthDateGroup
{
Day = date.Day, Month = date.Month, Year = date.Year
}
into g
select g;
}
//Rest of groupings...
我假设在 Query 中使用 Func 会导致错误,是否可以生成这样的代码?
附:我仍在尝试围绕 Func 和表达式 :)
【问题讨论】:
标签: c# linq-to-sql group-by func