2017-06-15 4 views
1

J'ai un tableau de tableaux. Supposons que je veux compter combien d'éléments sur les 9 est égal à "a".Nombre d'éléments dans un tableau de tableaux égal à la valeur spécifiée

string[][] arr = new string[3][] { 
    new string[]{"a","b","c"}, 
    new string[]{"d","a","f"}, 
    new string[]{"g","a","a"} 
}; 

Comment puis-je le faire en utilisant des méthodes d'extension Enumerable (Count, Where, etc.)?

+3

'.SelectMany (a => a). Compte (a => a == "a") '? – CodeCaster

Répondre

2

Vous avez simplement besoin d'un moyen d'itérer sur les sous-éléments de la matrice, vous pouvez faire en utilisant SelectMany(), puis utilisez Count():

int count = arr.SelectMany(x => x).Count(x => x == "a"); 

production:

csharp> arr.SelectMany(x => x).Count(x => x == "a"); 
4 

Ou vous pourriez Sum() les comptes des Count() s de chaque ligne individuelle, comme:

int count = arr.Sum(x => x.Count(y => y == "a")); 

Production nouveau:

csharp> arr.Sum(x => x.Count(y => y == "a")); 
4 
3

Vous pouvez aplatir tous les tableaux en séquence unique de chaînes avec SelectMany puis utilisez l'extension Count qui accepte prédicat:

arr.SelectMany(a => a).Count(s => s == "a")