我有 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}
最佳答案
使用 Max
和 Where
的组合:
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/