如何比较C#中的Guids列表

Dev*_*per 0 .net c# comparison dictionary list

我有这个结构

var values = new Dictionary<int, List<Guid>>();
Run Code Online (Sandbox Code Playgroud)

而且我必须说所有词典元素都有相同的组合List<Guid>.

我不需要知道哪些是完全不同的,只是为了回答这个问题.

所以它看起来像

List A { 1, 2, 3} List B { 1, 2, 3} List C { 1, 2, 3} 同样没有区别.

List A { 3, 2, 3} List B { 1, 2, 3} List C { 1, 2, 3} 不一样.

我不知道我可以在哪里开始它.

最初,我猜想转换List<Guid>string并只是distinct对它进行操作.

但这是一个好方法吗?

谢谢!

Jon*_*eet 9

HashSet<Guid>将从其中一个值(任何)创建一个,然后检查所有其他值是否等于它:

// TODO: Handle the dictionary being empty
var firstSet = new HashSet<Guid>(values.First().Value);
var allEqual = values.All(pair => firstSet.SetEquals(pair.Value));
Run Code Online (Sandbox Code Playgroud)

这假定:

  • 每个清单中的顺序并不重要
  • 每个GUID出现在列表中的次数并不重要

(即你真的把它们想象为集合,而不是列表,至少对于这部分代码而言)

换句话说,如果您有guid A和B,则上面的代码假定{A,B,B}等同于{B,A}.