设置属性,如果存在于另一个列表中

时间:2014-12-30 06:24:52

标签: c# linq

我有两个类型为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; });

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

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

1 个答案:

答案 0 :(得分:2)

试试这个:

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

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

Demo