一段时间以来,我一直在为这个问题挠头。假设我做了一个扩展方法,按日期对项目列表进行分组,我想更改可能的分组,以便结果可以按日、周或月分组。
我想出了以下内容,但我不断收到以下错误:
方法“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...
我假设在查询中使用 Func 会导致错误,是否可以生成这样的代码?
PS我仍在尝试围绕Func和Expressions :)