我有一個匯率表。我需要得到目前的速度和先前的速度,然後比較結果。如何獲得linq的第二條記錄到sql
我可以使用FirstOrDefault獲得第一條記錄。
當我使用ElementAtOrDefault時,錯誤顯示「不支持查詢運算符'ElementAtOrDefault'」。我如何獲得第二個記錄?
我有一個匯率表。我需要得到目前的速度和先前的速度,然後比較結果。如何獲得linq的第二條記錄到sql
我可以使用FirstOrDefault獲得第一條記錄。
當我使用ElementAtOrDefault時,錯誤顯示「不支持查詢運算符'ElementAtOrDefault'」。我如何獲得第二個記錄?
你可以試試這個:
var query=data.Skip(1).Take(1);
如果使用
.Take(2)
你會得到第一和第二。
編輯 - 如果你需要第一和第二的話,上面會比乳寧查詢兩次,更高效:
.Take(1)
.Skip(1).Take(1)
選擇前2 ,然後選擇第二個元素。如果該元素是不存在
使用.Skip(1)方法
取()返回null(所以相當於FirstOrDefault())。
如果你寧願拋出異常(COS第二個元素是不存在的)像一(),然後使用:
Skip(1).Single()
這裏有沒有明確提及一個細節:FirstOrDefault
返回Element
,Skip(1).Take(1)
返回一組元素;即由Skip(1).Take(1)
返回的類型是IEnumerable
,而FirstOrDefault
不是。
試試這個簡單的實現,這可能是有用的
var query= (from p in db.Person where p.Person == person_id select p);
var firstResult = query.First();
var secondResult = query.Skip(1).Take(1).Single();
var thirdResult = query.Skip(2).Take(1).Single();
Collection.ElementAt(1)
將取回集合中的第二個記錄。
或跳過(1)。拿(1)只得到第二個。 – Blorgbeard 2009-05-05 12:32:14