Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 如果其他列表中存在,则设置属性_C#_Linq - Fatal编程技术网

C# 如果其他列表中存在,则设置属性

C# 如果其他列表中存在,则设置属性,c#,linq,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

我有两个类型为
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; });
公共类Derp
{
公共布尔有效;
公共价值;
公共价值观;
公共价值观;
公共投资有很多价值;
}
列表a=新列表();
列表b=新列表();
///填充两者
var c=a.Intersect(b).Select(x=>{x.Valid=true;返回x;});
如果
a
中存在
b
,我需要将
Valid
设置为true,并保留
a
中的所有值。我可以理解上面的代码片段只保留了相交的对象,但我需要保留
a

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

尝试一下:

b.ForEach(x => {if (a.Contains(x)) {x.Valid = true;} });
以上工作。但是,请注意@SriramSakthivel的评论,并在可能的情况下重新考虑您的方法


Linq不是治疗副作用的好工具。放弃使用linq的想法,编写foreach循环。或者编写一个linq查询来查询您需要的对象,然后使用foreach来更新它。奇怪的是,为什么这么说(linq不是一个好工具)?我说linq不是一个解决副作用的好工具(并不意味着linq不是一个好工具)。linq的完整形式是语言集成查询。顾名思义,它应该只用于查询数据,而不是更新数据。酷,真不敢相信我对Linq的q如此视而不见。我决定改为实现foreach循环。您的答案似乎与它没有什么不同。是的,这是一个比使用Linq更好的解决方案。事实上,除了
List
,我不认为任何其他集合都与
ForEach
方法相关联。