C#LINQ-如何获得清晰的记录?
我有这样一个SQL表:C#LINQ-如何获得清晰的记录?,c#,sql,asp.net,entity-framework,linq,C#,Sql,Asp.net,Entity Framework,Linq,我有这样一个SQL表: 如何获得每个不同键列的最大值 我的预期结果是: 假设我有一个带有ID和年龄的Employee类。下面的查询应以预期格式返回结果。基本上是按Id查询要分组的项目,并返回每个组的最大值 List<Empployee> lst = new List<Empployee>(); lst.GroupBy(g => g.ID).ToList().ForEach(g => {
如何获得每个不同键列的最大值 我的预期结果是:
假设我有一个带有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; }
}
List lst=new List();
lst.GroupBy(g=>g.ID).ToList().ForEach(g=>
{
WriteLine($“Key:{g.Key}和Value:{g.Max(m=>m.Age)}”);
});
公共类雇员
{
公共int ID{get;set;}
公共整数{get;set;}
}
假设我有一个带有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; }
}
List lst=new List();
lst.GroupBy(g=>g.ID).ToList().ForEach(g=>
{
WriteLine($“Key:{g.Key}和Value:{g.Max(m=>m.Age)}”);
});
公共类雇员
{
公共int ID{get;set;}
公共整数{get;set;}
}
.GroupBy(k=>k.key)
.Select(g=>g.OrderByDescending(v=>v.value)
.FirstOrDefault());
.GroupBy(k=>k.key)
.Select(g=>g.OrderByDescending(v=>v.value)
.FirstOrDefault());
试试这个:
source
.GroupBy(x => x.Key)
.SelectMany(x => x.OrderByDescending(y => y.Value).Take(1));
最好养成一种习惯,在Select
/First()
上做一个SelectMany
/Take(1)
组合,因为前者对添加Where
子句很有效,而后者则不然。尝试以下方法:
source
.GroupBy(x => x.Key)
.SelectMany(x => x.OrderByDescending(y => y.Value).Take(1));
最好养成一种习惯,在
Select
/第一次()上做一个SelectMany
/Take(1)
组合
因为前者可以很好地添加Where
子句,而后者则不行。下面的答案中的查询不符合目的?下面的答案中的查询不符合目的?它就像一个符咒!但是它不允许我使用.First()命令,而是使用了.FirstOrDefault()谢谢!我通常使用.FirstOrDefault()。很高兴这有帮助。使用.First()还假定每个组中至少有一个项,或者会抛出一个错误。感谢你简洁明了的提问。大多数时候,人们过于含糊其辞或写小说,无法解释他们想要实现的目标。这就像一种魅力!但是它不允许我使用.First()命令,而是使用了.FirstOrDefault()谢谢!我通常使用.FirstOrDefault()。很高兴这有帮助。使用.First()还假定每个组中至少有一个项,或者会抛出一个错误。感谢你简洁明了的提问。大多数时候,人们都太含糊其辞或写小说,无法解释他们想要完成什么。谢谢,这很有效。但是我标记的答案更容易理解。谢谢,它有效。但我所标注的答案更容易理解。