有没有什么好方法可以确保多个集合使用LINQ具有相同的项目数?
答案 0 :(得分:2)
试试这个:
bool sameLength = (collections.Select(c => c.Count())
.Distinct()
.Take(2) // Optional (for optimization).
.Count()) == 1;
或:
bool sameLength = !collections.Select(c => c.Count()).Distinct().Skip(1).Any();
它的工作原理是查找每个集合的长度并跟踪唯一值。有一个不同的计数是可以的,但是如果有两个(或更多)不同的计数,则所有集合的长度不同,因此结果为假。
更新:如果集合具有不同的类型,您可以使用this answer中演示的非通用界面。
var collections = new List<ICollection> { a, b, c, d };
答案 1 :(得分:2)
检查是否
collection1.Count() == collection2.Count()
请注意这列举了该集合。如果枚举的集合很昂贵(比如LINQ2SQL)或者改变状态(更新一些数据和/或日志记录),那么使用LINQ就没有什么好办法了。
答案 2 :(得分:2)
如果您的所有馆藏都实施了ICollection
界面,则可以将它们放入单List<ICollection>
中,然后应用Mark的方法。
var a = new List<int>();
var b = new List<double>();
var c = new List<float>();
var d = new List<string>();
var collections = new List<ICollection> { a, b, c, d };
var sameLength = collections.Select(c => c.Count).Distinct().Count() == 1;