我有一个 Beam
对象列表。如何使用 LINQ 在 Width
属性大于 40 时更改梁的 IsJoist
属性?
class Beam
{
public double Width { get; set; }
public bool IsJoist { get; set; }
}
var bm1 = new Beam { Width = 40 };
var bm2 = new Beam { Width = 50 };
var bm3 = new Beam { Width = 30 };
var bm4 = new Beam { Width = 60 };
var Beams = new List<Beam> { bm1, bm2, bm3, bm4 };
这是我做过的,但我只得到了一个列表。我希望新列表与原始列表相同,除了某些横梁的IsJoist属性将被设置为true。
var result = Beams
.Where(x => x.Width > 40)
.Select(x => x.IsJoist = true)
.ToList();
我已经按照以下方式实现了这个功能。由于 LINQ 是用于查询的,所以这样做是否可以?
var result = Beams
.Where(x => x.Width > 40)
.Select(x =>
{
x.IsJoist = true;
return x;
})
.ToList();
List<T>
类型上使用“破坏性”的方法ForEach
。 - Simon Whitehead