我有
的字典<string, ISet<string>>
我要做的是检查字典中的所有值是否相同。
我唯一能想到的就是以简单的for和check迭代dict.Values。但是,有没有使用LINQ或其他方法的解决方法?
答案 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>
来按特定顺序枚举,因此您可能需要对firstSet
和set
进行排序。
或
bool sameSets = (firstSet == null) ||
dic.Values.Skip(1).All(set =>
(set.Count == firstSet.Count) &&
set.All(setItem => firstSet.Contains(setItem));