【发布时间】:2018-02-02 02:57:53
【问题描述】:
【问题讨论】:
-
回答中的以下查询不符合目的?
标签: c# sql asp.net entity-framework linq
【问题讨论】:
标签: c# sql asp.net entity-framework linq
<tableName>.GroupBy(k => k.key)
.Select(g => g.OrderByDescending(v => v.value)
.FirstOrDefault());
【讨论】:
假设我有 ID 和年龄的 Employee 类。下面的查询应该以预期的格式返回您的结果。基本上查询要按 Id 对项目进行分组并从每个组返回最大值。
List<Empployee> lst = new List<Empployee>();
lst.GroupBy(g => g.ID).ToList().ForEach(g =>
{
Console.WriteLine($"Key:{g.Key} and Value:{g.Max(m => m.Age)}");
});
public class Empployee
{
public int ID { get; set; }
public int Age { get; set; }
}
【讨论】:
试试这个:
source
.GroupBy(x => x.Key)
.SelectMany(x => x.OrderByDescending(y => y.Value).Take(1));
最好养成使用SelectMany/Take(1) 组合而不是Select/First() 的习惯,因为前者对添加Where 子句很有效,而后者则不然。
【讨论】: