Si realiza este tipo de comparación en un solo lugar, entonces es probable que no vale la pena tratar de hacerla más corta (especialmente si su impacto en el rendimiento).
Sin embargo, si se comparan las longitudes de lista en más de un lugar, es tal vez valga la pena ponerlo en una función a continuación, volver a usarlo muchas veces:
static bool SameLength<T>(params IList<T>[] lists) {
int len = -1;
foreach (var list in lists) {
int list_len = list.Count;
if (len >= 0 && len != list_len)
return false;
len = list_len;
}
return true;
}
static void Main(string[] args) {
// All of these lists have same length (2):
var list1 = new List<int> { 1, 2 };
var list2 = new List<int> { 3, 4 };
var list3 = new List<int> { 5, 6 };
var list4 = new List<int> { 7, 8 };
var list5 = new List<int> { 9, 10 };
var list6 = new List<int> { 11, 12 };
if (SameLength(list1, list2, list3, list4, list5, list6)) {
// Executed.
}
// But this one is different (length 3):
var list7 = new List<int> { 11, 22, 33 };
if (SameLength(list1, list2, list3, list7, list4, list5, list6)) {
// Not executed.
}
}
--- --- EDITAR
Basado en Dean Barnes' idea, incluso se podría hacer esto para la ejecución extra-corto:
static bool SameLength<T>(params IList<T>[] lists) {
return lists.All(list => list.Count == lists[0].Count);
}
en lugar de 'Take (2) .Count() == 1' prefiero el' Saltee (1) .A ny() 'modismo – sehe