2012-02-01 8 views
9

私は4行のリストを持っています。 3行目の値を取得する必要があります。Linq skip、take

var result = (from rs in list 
        select rs).Skip(2).First(); 

私が使用したのと同じように、このScenerioでTake(1)を使用する理由がありますか?

 var result = (from rs in list 
        select rs).Skip(2).Take(1); 
+11

「x in y select x'」からの書き込みには、決してポイントがありません。 – SLaks

+2

list.Skip(2).Take(1) –

+4

'list.ElementAt(2)'はあなたが探している項目のインデックスを知っていれば必要なものだけです。 – Naikrovek

答えて

18

をスキップして複数の項目を取得する場合を除き。
First()はオブジェクトを直接返します。それは、(列挙を返す以外)FirstOrDefault()に類似している - 質問Take(1)の文脈において

+12

これは実際には間違っています - ソース列挙が空の場合、 'Take(1)'はゼロオブジェクトを含む列挙型を返すことがあります。 – BrokenGlass

0

ないあなたは一つのオブジェクトを含むIEnumerable<T>を返しTake(1)最初の2つの項目

//Example: 
var result = (from rs in list 
         select rs).Skip(2).Take(5); //Returns 5 items 
5

は0または1要素を含有するIEnumerable<T>を返しています。

質問に答えてください:いいえ。この場合、結果セット内の内容に応じてFirst()またはFirstOrDefault()を使用してください。