J'ai
string[] pkgratio= "1:2:6".Split(':');
var items = pkgratio.OrderByDescending(x => x);
Je veux sélectionner la valeur moyenne et j'ai trouvé cela. Est-ce une manière correcte de sélectionner la deuxième valeur dans un IEnumberable?
pkgratio.Skip(1).Take(1).First();
Alors que ce que vous avez fonctionne, la façon la plus simple serait d'utiliser l'index du tableau et de référencer le deuxième élément (à l'index 1 puisque l'index commence à zéro pour le premier élément): pkgratio[1]
Console.WriteLine(pkgratio[1]);
Un exemple plus complet:
string[] pkgratio = "1:2:6".Split(':');
for (int i = 0; i < pkgratio.Length; i++)
Console.WriteLine(pkgratio[i]);
Avec un IEnumerable<T>
Ce que vous avez fonctionne, ou vous pouvez obtenir directement l'élément en utilisant la méthode ElementAt
:
// same idea, zero index applies here too
var elem = result.ElementAt(1);
Voici votre échantillon sous forme de IEnumerable<string>
. Notez que l'appel AsEnumerable()
est pour souligner que l'exemple fonctionne avec un IEnumerable<string>
. Vous pouvez réellement utiliser ElementAt
contre le résultat du tableau string[]
De Split
, mais il est plus efficace d'utiliser l'indexeur indiqué 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 prendre 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 strictement nécessaire si vous allez juste First()
, donc je pourrais aller avec
pkgratio.Skip(1).First();
Cependant, cette First()
lèvera une exception s'il n'y a pas de valeur, vous voudrez peut-être 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]