设置属性(如果存在于其他列表中)

本文关键字:其他 列表 于其他 属性 如果 存在 设置 | 更新日期: 2023-09-27 18:35:42

>我有两个类型为Derp的列表:

public class Derp
{
    public bool Valid;
    public int SomeValue;
    public int MoreValues;
    public int EvenMoreValues;
    public int ThereAreManyValues;
}
List<Derp> a = new List<Derp>();
List<Derp> b = new List<Derp>();
/// Populate both
var c = a.Intersect(b).Select(x=> { x.Valid = true; return x; });

如果b存在于a中,我需要将Valid设置为 true,并将所有值保留在 a 中。我可以理解上面的代码片段只保留相交的对象,但我需要保留a.

我也尝试了其他有趣的事情(var c = a.Where(x => b.Contains(x)).Sel...),但我认为我对 List 方法的理解不足以解决这个问题。

设置属性(如果存在于其他列表中)

试试这个:

b.ForEach(x => {if (a.Contains(x)) {x.Valid = true;} });

以上作品。但是,请注意@SriramSakthivel的评论,如果可能的话,请重新考虑您的方法。

演示