2016-09-12 8 views
2

Normalerweise, wenn alle Listen vom Typ String wären, würde ich verwenden:Vergleichen der Anzahl von mehreren Listen mit mehreren Typen?

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

oder gleichwertig. Wenn jedoch List1 vom Typ string, List2 Typ int & List3 Typ double ist, wie erreiche ich dann das oben genannte?

Offensichtlich Count nicht verfügbar ist, wenn das Verfahren über & versuchen wollen nicht den Weg der nach unten gehen:

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

verwendet arbeiten Probleme Sie müssen das Array von Listen in erster Linie zu definieren, wird nicht Du? –

Antwort

4

Verwenden List<IList> oder IList[], dann könnten Sie gleiche Logik anwenden Sie früher verwendet.

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

Nun, können Sie einfach:

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

Beachten Sie, dass damit auch alle List<T> Instanzen auf eine nicht-generische Schnittstelle upCast.

Beispiel:

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

den Array-Typ angeben und die gleiche LINQ laufen Sie sollten

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

Oder allgemeiner "ICollection". –

+0

Gefunden, dass ich .ToList() auf jeder Liste beim Instanziieren der neuen Liste ... aufrufen musste – Hardgraf

Verwandte Themen