選擇第二項我有LINQ - 在IEnumerable的
string[] pkgratio= "1:2:6".Split(':');
var items = pkgratio.OrderByDescending(x => x);
我想選擇的中間值都拿出了這一點。這是在IEnumberable中選擇第二個值的正確方法嗎?
pkgratio.Skip(1).Take(1).First();
選擇第二項我有LINQ - 在IEnumerable的
string[] pkgratio= "1:2:6".Split(':');
var items = pkgratio.OrderByDescending(x => x);
我想選擇的中間值都拿出了這一點。這是在IEnumberable中選擇第二個值的正確方法嗎?
pkgratio.Skip(1).Take(1).First();
雖然你有什麼工作,最簡單的方法是使用數組的索引和引用的第二個項目(索引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
method:
// same idea, zero index applies here too
var elem = result.ElementAt(1);
這裏是爲您的IEnumerable<string>
樣品。請注意,AsEnumerable()
呼籲是要強調針對IEnumerable<string>
的樣本作品。您實際上可以使用ElementAt
對來自Split
的string[]
陣列結果,但使用前面顯示的索引器會更有效。
var pkgratio = "1:2:6".Split(':').AsEnumerable();
Console.WriteLine(pkgratio.ElementAt(1));
現在使用Linq多年了,從未使用過ElementAt()。忙於寫一些測試,需要它。很簡單的回答 – 2013-07-09 09:04:14
這裏同樣用ElementAt +1,現在也用ElementAtOrDefault – jolySoft 2015-06-15 15:04:05
pkgratio.ElementAt(1);
您的方案。
pkgratio.Skip(5).Take(10);
我不認爲:
但是,如果你使用一些數據,實現IQueryable
或者你需要開始採取在特定的指數如各類物品的方法只適用你需要.Take(1)
。
pkgratio.Skip(1).First()
但在這種情況下,你有一個數組,這樣你就可以很愉快地使用獲得的第二項:
pkgratio[1]
嘛,Take(1)
不是絕對必要的,如果你打算只First()
,所以我可能會
pkgratio.Skip(1).First();
然而去,First()
將拋出一個異常,如果有沒有價值,所以你可能會想嘗試FirstOrDefault()
然後檢查爲空。
與我的第一個問題有關:http://stackoverflow.com/questions/1735146/ways-to-get-the-middle-of-a-list-in-haskell – 2010-09-13 14:03:55
使用'First()'暗示你有信心,一個項目將實際上在你試圖訪問的位置。如果有任何疑問,你可能希望使用'FirstOrDefault()'。 – 2010-09-13 14:06:01
你不需要拿(1) – 2010-09-13 14:25:14