比较多个类型的多个列表的计数?

时间:2016-09-12 14:17:37

标签: c# linq generics

通常,如果所有列表都是字符串类型,我会使用:

var allLists = new[] { list1, list2, list3 };
bool result = allLists.All(l => l.Count == allLists[0].Count);

或同等学历。但是,如果List1的类型为stringList2类型为int& List3键入double然后我如何实现上述目标?

显然,在尝试上述方法时Count不可用。不想走下去的路线:

if(List1.Count == List2.Count && List2.Count == List3.Count etc. 

3 个答案:

答案 0 :(得分:5)

好吧,你可以简单地使用:

IList[] allLists = { list1, list2, list3 };

请注意,这会将所有List<T>实例向上转换为非通用接口。

示例:

var list1 = new List<int>();
var list2 = new List<string>();
var list3 = new List<double>();

IList[] allLists = {list1, list2, list3};

bool result = allLists.All(l => l.Count == allLists[0].Count);

答案 1 :(得分:4)

使用List<IList>IList[],然后您可以应用之前使用的相同逻辑。

var allLists = new List<IList>  {list1, list2, list3};

答案 2 :(得分:2)

指定数组类型并运行您使用的相同LINQ应该可以正常工作

var allLists = new IList[] { list1, list2, list3 };