我有以下問題: 我從數據庫中選擇數據,並從表中的每個項目創建一個模型。 該模型包含一個列表,其中包含3種語言的名稱。 但由於某種原因,LINQ不保留我的列表初始化順序。LINQ列表初始化程序不保留初始化命令
代碼:
db.SA_BamaType
.Select(b => new BamaTypeModel()
{
id = b.p_bamatype,
bamatypeNames = new List<string>()
{b.bamatypeafdrukNL, b.bamatypeafdrukFR, b.bamatypeafdrukEN}
}).ToList();
但是,當我調試這個名單,我看的項目是從位置隨機切換。 EN將成爲索引0,而NL應該是索引0.
字典將是最好的用途,但它似乎LINQ不能翻譯字典,這就是爲什麼我使用了List。
您可以轉換成字典。請參閱[ToDictionary()方法](http://msdn.microsoft.com/en-us/library/system.linq.enumerable.todictionary.aspx)...此外,當您從數據庫中檢索行時,順序是除非您在特定鍵(或鍵組)上有聚簇索引,或者在處理結果集之前排序結果集,否則無法保證。 –
數據庫中的訂單可能無法保證。但List()應該保證存儲在通過順序的項目!奇怪。 –
確實很奇怪。這不是重要的行順序,它是我在列表初始化程序中分配的項目的順序,似乎失去了它們的順序。我現在使用了一本字典,在這種情況下實際上是最好的方法,但我仍然不明白爲什麼列表不想保留我初始化的項目的順序。 – Mortana