我有以下枚举扩展方法:
public static Expression<Func<Table, object>> GetGroupByClause(this OntDubbelingsEigenschappen o)
{
switch (o)
{
case OntDubbelingsEigenschappen.Voornaam:
return w => w.TableField1;
case OntDubbelingsEigenschappen.Achternaam:
return w => w.TableField2;
case OntDubbelingsEigenschappen.Emailadres:
return w => w.TableField3;
case OntDubbelingsEigenschappen.GeboorteDatum:
return w => w.TableField4;
default:
return null;
}
}
现在我想使用此扩展来创建以下查询:
List<Expression<Func<Table, object>>> delList = new List<Expression<Func<Table, object>>>();
ontdubbelEigenschapIds.ForEach(f => delList.Add(f.GetGroupByClause()));
var users = Db.Table.GroupBy(x => new { delList })
.SelectMany(s => s).ToList().Select(s =>
new Model(s, isOverTakeActive)).ToList();
这不起作用,因为我在查询中传递非基本类型。我怎样才能以正确的方式做到这一点?
答案 0 :(得分:0)
Mitsu Furuta有一个很好的解决方案......
https://blogs.msdn.microsoft.com/mitsu/2007/12/21/playing-with-linq-grouping-groupbymany/
虽然不会产生扁平的分组......
如果你想展平得到的树,那么你想看的组就是树的叶子......用收益率回报来尖叫一点递归