【发布时间】:2012-02-16 11:30:03
【问题描述】:
我有以下问题: 我从数据库中选择数据,并为表中的每个项目创建一个模型。 该模型包含一个列表,其中包含 3 种语言的名称。 但由于某种原因,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() method... 此外,当您从数据库中检索行时,除非您在特定键(或键组)上具有聚集索引,或者在处理结果集之前对结果集进行排序,否则无法保证顺序。跨度>
-
可能无法保证来自数据库的订单。但是 List() 应该保证按传递的顺序存储项目!奇怪。
-
确实很奇怪。重要的不是行的顺序,而是我在列表初始化程序中分配的项目的顺序,这似乎失去了它们的顺序。我现在使用字典,这实际上是这种情况下最好的方法,但我仍然不明白为什么列表不想保持我初始化的项目的顺序。