首页 / C#开发 / 正文

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

5393 发布于: 2018-05-08 读完约需3分钟

问题描述

在.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根据一个集合的某个属性对另一个集合进行排序?

下一篇: [MySQL]MySQL数据库中如何重置自增字段(AUTO_INCREMENT)的值呢?

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

分享扩散:

发表评论

登录用户才能发表评论, 请 登 录 或者 注册