问题描述
在.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);
或者,更简单的实现方式,使用LINQ
的OrderByDescending()
和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);
版权声明:本作品系原创,版权归码友网所有,如未经许可,禁止任何形式转载,违者必究。
发表评论
登录用户才能发表评论, 请 登 录 或者 注册