如何将一个集合中的值与另一个集合中的值进行比较

use*_*953 1 .net c#

我想要一种功能,可以将一个集合对象与另一个集合对象进行比较。能够比较这些类型中的值。

例如:

var users = new List<string>();
users.Add("James");
users.Add("Jim");
users.Add("Aaron");
users.Add("Mary");

var confirmedUsers = new List<string>();
confirmedUsers.Add("James");
confirmedUsers.Add("Jim");
Run Code Online (Sandbox Code Playgroud)

我希望能够比较这两个列表并查看相似点和差异。例如,功能应显示“詹姆斯在两者中”-“亚伦从确认的用户中丢失”等。Ps 类型可以是任何类型。

任何帮助将非常感激。

shi*_*ngo 6

您可以使用相交除外

//James, Jim
var intersect = users.Intersect(confirmedUsers);

//Aaron, Mary
var except = users.Except(confirmedUsers);
Run Code Online (Sandbox Code Playgroud)

  • 另外,值得一提的是,这仅适用于原始类型。如果要比较某些自定义数据类型的对象序列,则必须在辅助类中实现“IEquatable&lt;T&gt;”通用接口或“IEqualityComparer&lt;T&gt;”。[Enumerable.Intersect 方法](https://learn.microsoft.com/en-us/dotnet/api/system.linq.enumerable.intersect?view=net-7.0) (2认同)