有没有一种简单的方法来检查ICollection <iset <string >>中的所有元素是否相同?

时间:2018-07-26 17:45:17

标签: c# linq

我有

的字典
<string, ISet<string>>

我要做的是检查字典中的所有值是否相同。

我唯一能想到的就是以简单的for和check迭代dict.Values。但是,有没有使用LINQ或其他方法的解决方法?

1 个答案:

答案 0 :(得分:1)

ISet<String> firstSet = dic.Values.FirstOrDefault(); 

bool sameSets = (firstSet == null) ||
                dic.Values.Skip(1).All(set => set.SequenceEqual(firstSet));

应该这样做

基本上得到第一个集合,然后将每个集合与其进行比较。

({Dictionary<string, ISet<string>>实现IEnumerable<KeyValuePair<string, ISet<string>>>

请注意,没有任何限制ISet<T>来按特定顺序枚举,因此您可能需要对firstSetset进行排序。

bool sameSets = (firstSet == null) ||
                dic.Values.Skip(1).All(set => 
                  (set.Count == firstSet.Count) && 
                  set.All(setItem => firstSet.Contains(setItem));