[LINQ].NET/C#应用程序开发如何使用LINQ的Max()方法查询某个集合中的一条记录?

C#开发 作者: Rector 801阅读 0评论 0收藏 收藏本文

郑重申明:本文未经许可,禁止任何形式转载

问题描述

在.NET/C#应用程序开发中,当前有一个实体对象集合List<T>,其中的实体对象T包含了属性信息。现在需要使用LINQ从这个集合List<T>中查询出某个属性对应的最大值的对象。
比如有实体对象Table

public class Table{
    public Table(int id,int status){
        Id=id;
        Status=status;
    }
    public int Id{get;set;}
    public int Status{get;set;}
}

示例数据如下:

var table = new Table { new Row(id: 1, status: 10), new Row(id: 2, status: 20) }

现需查询table集合中Status最大的实体对象。

伪代码如下:

from u in table
group u by 1 into g
where u.Status == g.Max(u => u.Status)
select u

在.NET/C#应用程序开发中,应该如何以上的LINQ查询操作呢?

方案一

使用LINQ中的Max()First()两个方法即可实现,如下:

var maxValue = table.Max(x => x.Status)
var result = table.First(x => x.Status == maxValue);

或者,更简单的实现方式,使用LINQOrderByDescending()First()方法,如下:

var result = table.OrderByDescending(x => x.Status).First();

方案二

var result = table.GroupBy(r => r.Status).OrderByDescending(g => g.Key).First().First();

方案三

使用LINQ查询表达式实现,如下:

(from u in table
orderby u.Status descending
select u).Take(1);

阅读了该文章的人还浏览了...

本文永久链接码友网 » [LINQ].NET/C#应用程序开发如何使用LINQ的Max()方法查询某个集合中的一条记录?

发布于: 2018-05-08 07:47:17
分享扩散: