回答
var myLinqObj = db.MyObjects.Take(1).SingleOrDefault();
你可以使用。首先()或.FirstOrDefault()像這樣:
Foo foo = query.Select(a => a.Name == "foo").FirstOrDefault();
// Will return a default value if no object is found in the DB
db.Table.SingleOrDefault(x => x.something == someParameter);
或
// Will throw an exception if records are not found
db.Table.Single(x => x.something == someParameter);
感謝邁赫達德的評論......這兩條線有已更新。
如果您的查詢可能導致返回多條記錄,則(如註釋中所述)Single()
和SingleOrDefault()
是調用的錯誤方法。您將保持相同的語法,但分別請撥打First()
和FirstOrDefault()
。
你可以用'.Single(predicate)'替換'.Where(predicate).Single()'。 – 2009-12-18 18:33:35
如果序列中存在多個單個項目,Single()將引發異常。如果你不在意拋出異常,你也可以使用First()或FirstOrDefault()。 – LBushkin 2009-12-18 18:35:06
@Mehrdad - 我做了改變,但兩者之間有什麼表現差異?我通常更喜歡.Where(謂詞).Single(),因爲我認爲它表達我的意圖更清晰一些。 – 2009-12-18 18:36:32
您可以使用First
或Single
。
First
返回第一行,無論是多行還是隻有一行。
Single
預計只返回一行,如果有多行則拋出異常。
Single
因此可能是一個更好的選擇,如果您希望只有一行,以便您能夠立即看到問題並且可以排除故障。
從所有已經表示,如果您使用的是LINQ到XML,我的另外一點是在使用單個元素之後使用Value
屬性。
而Select new { *cols* }
如果它是一個列表或數組或表。 示例。 ...選擇新的{c.Name,c.Value};
這個技巧是爲了讓你獲得價值。
- 1. LINQ查詢返回多個結果
- 2. LINQ查詢返回空結果
- 3. LINQ查詢返回沒有結果
- 4. LINQ-to-SQL查詢返回無結果
- 5. LINQ to MySQL查詢返回無結果
- 6. LINQ查詢不返回結果
- 7. Linq查詢返回重複結果
- 8. Linq查詢返回沒有結果
- 9. LINQ查詢返回多個副本的第一個結果
- 10. 查詢只返回一個結果
- 11. 只返回一個SQL查詢結果
- 12. JDBC - 一個查詢返回的結果
- 13. MySQL查詢只返回一個結果
- 14. LINQ返回一組結果
- 15. Linq查詢返回0結果,但應返回1
- 16. XPath查詢應該返回多個結果,但只返回一個結果
- 17. Solr 4返回0個查詢結果,但返回「*:*」查詢結果
- 18. 無法從查詢中返回linq結果
- 19. MySQL:查詢另一個查詢結果並返回兩個結果?
- 20. 是否有查詢從一個文檔返回多個結果?
- 21. 查詢返回無結果
- 22. PDO查詢返回結果
- 23. 查詢不返回結果?
- 24. F3返回查詢結果
- 25. 返回查詢結果
- 26. 從函數返回mongojs查詢結果
- 27. 從SQL查詢返回沒有結果
- 28. 從sql查詢返回結果
- 29. 需要linq查詢返回只有最後100個結果
- 30. 從LINQ查詢返回多個流
如果查詢「**應該**只返回一個結果」單個更有效,因爲如果查詢返回多個查詢,它會拋出更多錯誤,並標記錯誤。 – 2009-12-18 18:36:07
@Martinho Fernandes你是對的,我從來沒有使用過單一的 – 2009-12-18 20:41:25