私が持っています
string[] pkgratio= "1:2:6".Split(':');
var items = pkgratio.OrderByDescending(x => x);
中間の値を選択して、これを思いつきました。これはIEnumberableの2番目の値を選択する正しい方法ですか?
pkgratio.Skip(1).Take(1).First();
動作するものの、最も簡単な方法は、配列のインデックスを使用して、2番目の項目を参照することです(最初の要素のインデックスはゼロから始まるため、インデックス1で):_pkgratio[1]
_
_Console.WriteLine(pkgratio[1]);
_
より完全な例:
_string[] pkgratio = "1:2:6".Split(':');
for (int i = 0; i < pkgratio.Length; i++)
Console.WriteLine(pkgratio[i]);
_
_IEnumerable<T>
_を使用すると、動作するか、または ElementAt
メソッド を使用して要素を直接取得できます。
_// same idea, zero index applies here too
var elem = result.ElementAt(1);
_
以下は_IEnumerable<string>
_としてのサンプルです。 AsEnumerable()
呼び出しは、_IEnumerable<string>
_に対するサンプルの動作を強調することに注意してください。実際には、ElementAt
からの_string[]
_配列結果に対してSplit
を使用できますが、前に示したインデクサーを使用する方が効率的です。
_var pkgratio = "1:2:6".Split(':').AsEnumerable();
Console.WriteLine(pkgratio.ElementAt(1));
_
.Take(1)
する必要はないと思います。
pkgratio.Skip(1).First()
シナリオのpkgratio.ElementAt(1);
。
ただし、メソッドはIQueryable
を実装したデータを使用していた場合、または特定のインデックスで始まるアイテムの範囲を取得する必要がある場合にのみ適用できます。例:
pkgratio.Skip(5).Take(10);
Take(1)
は、First()
だけを使用する場合は厳密には必要ないので、
_pkgratio.Skip(1).First();
_
ただし、そのFirst()
は値がない場合は例外をスローするため、FirstOrDefault()
を試してからnullをチェックすることをお勧めします。
ただし、この場合は配列があるため、次の項目を使用して2番目の項目を非常に喜んで取得できます。
pkgratio[1]