LINQ – sélection du deuxième élément dans IEnumerable

j’ai

ssortingng[] pkgratio= "1:2:6".Split(':');

 var items = pkgratio.OrderByDescending(x => x); 

Je veux sélectionner la valeur moyenne et suis venu avec cela. Est-ce une manière correcte de sélectionner la deuxième valeur dans un IEnumberable?

 pkgratio.Skip(1).Take(1).First(); 

Bien que ce que vous avez fonctionne, le moyen le plus simple consiste à utiliser l’index du tableau et à référencer le deuxième élément (à l’index 1 puisque l’indice commence à zéro pour le premier élément): pkgratio[1]

 Console.WriteLine(pkgratio[1]); 

Un exemple plus complet:

 ssortingng[] pkgratio = "1:2:6".Split(':'); for (int i = 0; i < pkgratio.Length; i++) Console.WriteLine(pkgratio[i]); 

Avec un IEnumerable ce que vous avez fonctionne, ou vous pouvez directement obtenir l'élément en utilisant la méthode ElementAt :

 // same idea, zero index applies here too var elem = result.ElementAt(1); 

Voici votre exemple sous la forme d'une IEnumerable . Notez que l'appel AsEnumerable() doit souligner que l'exemple fonctionne par rapport à une IEnumerable . Vous pouvez réellement utiliser ElementAt avec le résultat du tableau ssortingng[] de Split , mais il est plus efficace d'utiliser l'indexeur présenté précédemment.

 var pkgratio = "1:2:6".Split(':').AsEnumerable(); Console.WriteLine(pkgratio.ElementAt(1)); 

Je ne pense pas que vous ayez besoin de .Take(1) .

 pkgratio.Skip(1).First() 

pkgratio.ElementAt(1); pour votre scénario.

Cependant, votre méthode n’est applicable que si vous utilisiez des données qui implémentaient IQueryable ou si vous deviez utiliser une plage d’éléments commençant par un index spécifique, par exemple:

pkgratio.Skip(5).Take(10);

Eh bien, la Take(1) n’est pas ssortingctement nécessaire si vous voulez simplement la First() , alors je pourrais y aller avec

 pkgratio.Skip(1).First(); 

Cependant, First() lève une exception s’il n’y a pas de valeur. Vous pouvez donc essayer FirstOrDefault() , puis vérifier la valeur null.

Mais dans ce cas, vous avez un tableau, vous pouvez donc très facilement obtenir le deuxième élément en utilisant:

 pkgratio[1]