Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/309.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C#LINQ-如何获得清晰的记录?_C#_Sql_Asp.net_Entity Framework_Linq - Fatal编程技术网

C#LINQ-如何获得清晰的记录?

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 => {

我有这样一个SQL表:

如何获得每个不同键列的最大值

我的预期结果是:

假设我有一个带有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()还假定每个组中至少有一个项,或者会抛出一个错误。感谢你简洁明了的提问。大多数时候,人们都太含糊其辞或写小说,无法解释他们想要完成什么。谢谢,这很有效。但是我标记的答案更容易理解。谢谢,它有效。但我所标注的答案更容易理解。