2016-09-12 3 views
2

Обычно, если все списки были строкового типа я хотел бы использовать:Сравнение количества нескольких списков нескольких типов?

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

или эквивалент. Однако, если List1 имеет тип string, List2 тип int & List3 тип double, то как достичь вышеуказанного?

Очевидно Count не доступен при попытке метода выше & не хотят идти вниз маршрут:

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

Вы будете иметь проблемы, определяющую массив списков, в первую очередь, не будет ты? –

ответ

4

Использование List<IList> или IList[], то вы могли бы применить ту же логику, которые использовались ранее.

var allLists = new List<IList> {list1, list2, list3}; 
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); 
2

Указание типа массива и работает тот же LINQ вы использовали должны работать

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

Или, в более общем плане, 'ICollection'. –

+0

Обнаружено, что мне приходилось вызывать .ToList() в каждом списке при создании нового списка ... – Hardgraf

Смежные вопросы