我已经思考了一段时间,想要制作一个扩展方法,通过日期对项目列表进行分组,我希望可以更改可能的分组方式,以便可以按日、周或月进行分组。
我想到了下面的方法,但是我一直收到以下错误:
方法'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引起了错误,是否有可能产生像这样的代码呢?
另外,我仍在努力理解Func和Expressions:)