3 回答
TA贡献1942条经验 获得超3个赞
您可以尝试以下方法:
if(!listOfObject2.Any(x => x.Value1 == object1.Value1
&& x.Value2 == object1.Value2)
)
{
object1.Exclude = true;
}
在上面的代码片段中,listOfObject2是 typeList<Object2>和object1type Object1。
TA贡献1911条经验 获得超7个赞
Object1另一种方法是在类上实现一个比较方法,如果属性匹配则接收Object2并返回:true
public class Object1
{
public string Value1 { get; set; }
public string Value2 { get; set; }
public bool Exclude { get; set; }
public bool ValuesMatch(Object2 other)
{
return (other != null) &&
Value1 == other.Value1 &&
Value2 == other.Value2;
}
}
然后你可以在你的 Linq 语句中使用这个方法:
object1.ForEach(o1 => o1.Exclude = object2.Any(o1.ValuesMatch));
TA贡献1826条经验 获得超6个赞
如果您有两个列表,则应该可以:
foreach (var obj1 in object1)
{
obj1.Exclude = true;
foreach (var obj2 in object2)
{
if (obj1.Value1.Equals(obj2.Value1)
|| obj1.Value1.Equals(obj2.Value2)
|| obj1.Value2.Equals(obj2.Value1)
|| obj1.Value2.Equals(obj2.Value2))
{
obj1.Exclude = false;
break;
}
}
}
这将初始化Exclude为 true,然后循环遍历Object1列表并将其两个值Object2与 object2 列表中的每个值进行比较。如果找到匹配项,则将 exclude 设置为 false 并中断内部循环,因为它不再需要查看。如果它一直通过,Exclude保持真实。
- 3 回答
- 0 关注
- 144 浏览
添加回答
举报