我有以下问题: 我从数据库中选择数据,并从表中的每个项目创建一个模型。 该模型包含一个列表,其中包含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