如何使用LINQ确保多个集合具有相同的项目数

Yoa*_*. B 6 .net c# linq .net-4.0

有没有什么好方法可以确保多个集合使用LINQ具有相同的项目数?

Mar*_*ers 2

尝试这个:

bool sameLength = (collections.Select(c => c.Count())
                              .Distinct()
                              .Take(2)   // Optional (for optimization).
                              .Count()) == 1;
Run Code Online (Sandbox Code Playgroud)

或者:

bool sameLength = !collections.Select(c => c.Count()).Distinct().Skip(1).Any();
Run Code Online (Sandbox Code Playgroud)

它的工作原理是检查每个集合的长度并跟踪唯一值。有一个不同的计数是可以的,但如果有两个(或更多)不同的计数,则所有集合的长度不相同,因此结果为 false。


更新:如果集合具有不同类型,您可以使用非通用接口,如本答案所示。

var collections = new List<ICollection> { a, b, c, d };
Run Code Online (Sandbox Code Playgroud)