假设我有以下对象foo
及其属性,如下所示:
class foo
public string name
public string property1
public string property2
现在让我们实例化两个foo
:List<foo>()
第一个列表包含两个foo
个对象:
new foo() =
{
name = "name",
property1 = "random value",
property1 = "random value"
}
new foo() =
{
name = "name",
property1 = "random value",
property1 = "random value"
}
第二个列表包含一个foo
对象:
new foo() =
{
name = "name",
property1 = "random value",
property1 = "random value"
}
是否可以使用 LINQ 来比较并返回包含这两个列表(或其他任何列表)之间差异的新List<foo>
? 考虑到项目订单和任何不匹配的属性值也被视为差异。
这对原始对象很有用: Compare two lists, item by item, using linq但没有提供返回带有差异的新列表的方法。
@CSharpie重新开放......现在问题的定义看起来很差 - 即{1,2,3,4}和{1,3,4}的预期结果是什么?可能OP正在寻找某种差异..
@AlexeiLevenkov输出应为2.或者对于{1,2,3,4}和{1,3,2,4}的列表,输出应该是{3,2},因为顺序(或值) )3和2已从原始列表中更改。
答案 0 :(得分:2)
尝试使用Except LINQ方法:
List<int> a = new List<int>{ 1, 2, 5 };
List<int> b = new List<int>{ 2, 3};
var result = a.Except(b).Union(b.Except(a)).ToList();
在集合论中,(A-B)+(B-A)
相当于两者之间的差异。