2012-11-21 84 views
0

如何獲取獨立於行主鍵的表中的第一條記錄?我正在使用MVC 4,EF Code First和數據庫上下文,或者我將不得不使用LINQ爲此?MVC 4 SQL Server,如何獲取表中的第一條記錄?

我想我可以使用db.ToList()來獲取列表,然後遍歷特定的元素,但不會「下載」整個表?

原因如果它不是不好的做法和效率低下?

編輯:意思是說「第一條記錄」,遺憾的任何困惑:)

+6

沒有訂單就沒有「第一行」的概念。如果您從表中選擇記錄,則不保證沒有ORDER BY子句,它們將以任何特定順序返回。要從LINQ中的數據庫中獲取第一條記錄,請使用.Take(1)。沒有訂單,就沒有辦法預測這一行是什麼。見這裏:http://stackoverflow.com/questions/192203/whats-the-linq-to-sql-equivalent-to-top –

+0

你爲什麼要這樣做?你想要做什麼?我不能想到一個理由,只想第一行沒有'第一'在某些情況下 - 例如第一行插入... – Judo

回答

2

你試過:

db.List.First(); 
  • 如果不按條款有秩序的行會按聚集索引排序(默認爲主鍵)
  • 如果您按子句排序,將按您指定的順序排序
+1

如果您沒有'ORDER BY',服務器是自由返回*任何*命令都很方便。這絕不能保證這將遵循聚集索引的順序。 –

+0

謝謝,這是我正在尋找。 – Graknol

+0

不確定EF是否使用'top',但不使用MSDN:http://msdn.microsoft.com/zh-cn/library/ms189463.aspx「當TOP與ORDER BY子句一起使用時,結果集被限制爲前N個有序行;否則,它將以* undefined *順序返回前N個行。「 (強調我自己的)。 -1,只是因爲這是**不是**答案(答案是*有*不是第一行)。 – JayC

相關問題