C#LINQ - 如何获得独特的记录?

时间:2018-02-02 02:57:53

标签: c# sql asp.net entity-framework linq

我有一个这样的SQL表:
enter image description here

如何获取每个不同Key列的最大值?

我的预期结果是:
enter image description here

3 个答案:

答案 0 :(得分:2)

<tableName>.GroupBy(k => k.key)
           .Select(g => g.OrderByDescending(v => v.value)
           .FirstOrDefault());

答案 1 :(得分:0)

假设我有带ID和年龄的员工类。下面的查询应该返回预期格式的结果。基本上查询按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; }
        }

答案 2 :(得分:0)

试试这个:

source
    .GroupBy(x => x.Key)
    .SelectMany(x => x.OrderByDescending(y => y.Value).Take(1));

养成在SelectMany / Take(1)上进行Select / First()组合的习惯是最好的,因为前者对于添加Where条款而后者不是。

相关问题