2个List<T>,但是对象添加到list时,顺序不一样,部分字段的值也不一致,怎么判断哪个值不一样
时间: 2024-03-03 13:51:12 浏览: 47
如果您需要判断哪些对象在两个 `List<T>` 中不一致,可以考虑使用 `LINQ` 中的 `Except` 方法。该方法可以通过比较两个列表中的元素,返回一个包含差异项的序列。
下面是一个示例代码:
```csharp
class Person
{
public int Id { get; set; }
public string Name { get; set; }
}
List<Person> list1 = new List<Person>
{
new Person { Id = 1, Name = "Alice" },
new Person { Id = 2, Name = "Bob" },
new Person { Id = 3, Name = "Charlie" }
};
List<Person> list2 = new List<Person>
{
new Person { Id = 2, Name = "Bob" },
new Person { Id = 1, Name = "Alice" },
new Person { Id = 4, Name = "David" }
};
var diff = list1.Except(list2).Union(list2.Except(list1));
foreach (var item in diff)
{
Console.WriteLine($"Id: {item.Id}, Name: {item.Name}");
}
```
在这个例子中,我们创建了两个 `List<Person>`,分别为 `list1` 和 `list2`,它们包含了相同的两个人,但是顺序和 `Id` 不同,还新增了一个人。我们通过 `Except` 方法来找到这些不同的项,并使用 `Union` 方法将两个列表中的结果合并。最后,我们遍历这个序列并输出每个不同的人的 `Id` 和 `Name`。
请注意,这种方法只能找到两个列表中不同的项,如果您需要比较所有字段,包括它们的顺序,您可以使用 `SequenceEqual` 方法来比较两个列表是否相等。
阅读全文