如果我們有一個基本結構為的 EF 物體
public class Entity
{
public int Id {get; set;}
public string name {get; set;}
public DateTime lastUpdated {get; set;}
}
它們的集合有 4 個物體:
entities = new List<Entity>{
new { Id = 0, Name = "Thing One", LastUpdated = new DateTime(2020, 10, 1, 0, 0, 0,)},
new { Id = 1, Name = "Thing One", LastUpdated = new DateTime(2020, 10, 4, 0, 0, 0,)},
new { Id = 2, Name = "Thing One", LastUpdated = new DateTime(2020, 10, 3, 0, 0, 0,)},
new { Id = 3, Name = "Thing One", LastUpdated = new DateTime(2020, 10, 2, 0, 0, 0,)}
};
如果我們使用 Linq 來選擇FirstOrDefault通過 Name 屬性。
var selectedEntity = entities.FirstOrDefault(e => e.Name == "Thing One");
這將回傳什么?
這導致我正在審查的一段代碼出現問題;這將通過僅允許唯一物體和 using 來解決SingleOrDefault,但我很好奇在FirstOrDefault沒有OrderBy子句時默認情況下會回傳什么。
uj5u.com熱心網友回復:
回傳匹配此條件的第一個專案,如果有多個專案匹配結果是不可預測/未定義的。如果要確保特定專案,則需要應用OrderBy:
var selectedEntity = entities
.Where(e => e.Name == "Thing One")
.OrderByDescending(e => e.LastUpdated)
.FirstOrDefault();
資料庫回傳的內容取決于供應商。這個相關的問題可能會有所幫助:當沒有指定“排序依據”時,查詢為您的記錄集選擇什么順序?
轉載請註明出處,本文鏈接:https://www.uj5u.com/houduan/427148.html
上一篇:LINQ分組和合并屬性
