【发布时间】:2016-01-27 17:19:54
【问题描述】:
假设我有以下对象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 已从原始列表更改。
【问题讨论】:
-
@CSharpie 重新打开......现在问题看起来定义很不明确 - 即 {1,2,3,4} 和 {1,3,4} 的预期结果是什么?可能 OP 正在寻找某种差异..
-
@Alexei Levenkov,你是对的。 OP:您需要澄清您认为两个列表之间的区别以及这些列表中项目的顺序所起的作用。最好是指定一些具有预期结果的示例。
-
对不起,我的坏人,稍后会更新问题。
-
@CSharpie 请查看我的编辑。如果不清楚,请告诉我。