实体lambda,按一些列分组并选择更多列

时间:2017-05-12 20:13:35

标签: c# entity-framework

我的逻辑是这样的:

db.table.GroupBy(t => new { t.A, t.B}).Select( t => new { t.A, t.B, t.C, t.D});

起初,我认为Distinct()会有所帮助......但绝对不会。

请参阅...我只想采用A and B的不同组合,但请选择A, B, C, D

1 个答案:

答案 0 :(得分:3)

要获得AB的唯一组合,您只需从Key属性中获取它们,那么您必须决定CD你想要的价值观。在这里,我只是从每个A - B组合的第一行中提取它们,但您可以执行其他聚合,例如MinMax或{{1} }。

Average

诀窍是要了解db.table.GroupBy(t => new {t.A, t.B}) .Select(g => new {g.Key.A, g.Key.B, g.First().C, g.First().D}); 为您提供GroupByIEnumerable<IGrouping<TKey, TResult>>IGrouping<TKey, TResult>并且IEnumerable<TResult>属性为Key }。因此,您在TKey中使用的lambda根据您分组的内容处理具有Select的内容,并且是针对该唯一键值分组的所有项目/行的集合。 / p>