C#比较list集合中每个元素是否相同
时间: 2023-08-10 21:41:05 浏览: 51
比较 List 集合中每个元素是否相同可以使用 SequenceEqual 方法。该方法需要传入一个实现了 IEqualityComparer 接口的对象来比较元素。以下是一个示例代码:
```csharp
List<int> list1 = new List<int> { 1, 2, 3 };
List<int> list2 = new List<int> { 1, 2, 3 };
bool result = list1.SequenceEqual(list2); // result为true
```
如果需要比较自定义类型的元素,需要实现 IEqualityComparer 接口来比较。以下是一个比较 Person 类型的示例代码:
```csharp
class Person
{
public string Name { get; set; }
public int Age { get; set; }
}
class PersonComparer : IEqualityComparer<Person>
{
public bool Equals(Person x, Person y)
{
if (x == null || y == null)
return false;
return x.Name == y.Name && x.Age == y.Age;
}
public int GetHashCode(Person obj)
{
return obj.Name.GetHashCode() ^ obj.Age.GetHashCode();
}
}
List<Person> list1 = new List<Person>
{
new Person { Name = "Tom", Age = 20 },
new Person { Name = "Jerry", Age = 21 }
};
List<Person> list2 = new List<Person>
{
new Person { Name = "Tom", Age = 20 },
new Person { Name = "Jerry", Age = 21 }
};
bool result = list1.SequenceEqual(list2, new PersonComparer()); // result为true
```