c# - 使用基于属性的 LINQ 从列表中选择对象

标签 c# linq list

我有 Beam 对象列表。如何使用 LINQ 将具有最大 Depth 属性的那些选择到另一个列表中?

public class Beam
{
    public double Width { get; set; }
    public double Depth { get; set; }
}

var beam1 = new Beam() {Width = 40, Depth = 50};
var beam2 = new Beam() {Width = 40, Depth = 40};
var beam3 = new Beam() {Width = 30, Depth = 50};

var Beams = new List<Beam> {beam1, beam2, beam3};

我想要:

SelectedList = {beam1, beam3}

最佳答案

使用 MaxWhere 的组合:

var result = Beams.Where(b => b.Depth == Beams.Max(x => x.Depth));

但可以肯定的是,它应该通过将其分成两行来优化,这样 Max 就不会被一次又一次地调用:

var max = Beams.Max(x => x.Depth);
var result = Beams.Where(b => b.Depth == max);

关于c# - 使用基于属性的 LINQ 从列表中选择对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23382937/

相关文章:

c# - 如何通过 WPF 中的 HitTesting 使用坐标/点获取 TreeViewItem?

c# Linq 方法不遵循我设置的条件之一

c# - 如何在没有 LINQ 新投影的情况下更改值?

c# - LINQ to Entities 对具有嵌套对象的 Union 的空引用

c# - 如何使用 BsonClassMap 将 POCO 域对象属性映射为手册或 DBRef 引用?

c# - 用 C++ 托管 CLR 运行时

c# - HTTP header 中内容处置的替代方案 (c#)

python - 如何测试字符串的一部分是否等于python列表中的项目?

list - Groils在Grails列表上-不起作用?

python - List into a tuple - 修改列表反射(reflect)在元组中但清空列表不会改变元组