gpt4 book ai didi

c# - 使用 LINQ 从列表中获取具有特定属性最大值的对象

转载 作者:行者123 更新时间:2023-12-02 00:26:17 25 4
gpt4 key购买 nike

我有一个 Beam 对象列表。每个 Beam 类都有 XY 坐标属性,并且还有一个 Height 属性。

现在这是我的初始列表:

List1 = {beam1, beam2, beam3, beam4}

beam1 = {X = 0, Y = 0, Height = 40}
beam2 = {X = 200, Y = 0, Height = 40}
beam3 = {X = 200, Y = 0, Height = 60}
beam4 = {X = 400, Y = 0, Height = 40}

正如您所看到的,beam2beam3 位于同一点,我想要一个列表,其中只有最大高度的梁> 在每个不同的点。

因此使用 LINQ 的最终列表将是:

 List2 = {beam1, beam3, beam4}

最佳答案

您可以使用GroupBy根据XY对它们进行分组,并从每个组中选择具有最大高度的项目:

beams.GroupBy(b => new { b.X, b.Y })
.Select(g => g.First(x => x.Heigth == g.Max(h => h.Height)))
.ToList();

我个人会使用 MaxBy获得最大光束的方法。高度:

beams.GroupBy(b => new { b.X, b.Y })
.Select(g => g.MaxBy(x => x.Heigth))
.ToList();

关于c# - 使用 LINQ 从列表中获取具有特定属性最大值的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26775291/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com