C# 列表<;对象>;未维护内联初始化顺序

C# 列表<;对象>;未维护内联初始化顺序,c#,list,linq,C#,List,Linq,我使用LINQ to Entities语句从数据库中选择一些值: dbContext .dbSet.Where(e => e.FILLDATE.Equals(tradingDate)) .Select(e => new List<Object> { e.string1, e.string2, e.string3, e.int1.ToString(), e.string5, e.decimal1

我使用LINQ to Entities语句从数据库中选择一些值:

dbContext
  .dbSet.Where(e => e.FILLDATE.Equals(tradingDate))
  .Select(e => new List<Object> { 
     e.string1, 
     e.string2, 
     e.string3, 
     e.int1.ToString(), 
     e.string5, 
     e.decimal1.ToString(), 
     e.decimal2.ToString() 
   })
  .ToList();
dbContext
.dbSet.Where(e=>e.FILLDATE.Equals(tradingDate))
.选择(e=>新列表{
e、 第1条,
e、 第2条,
e、 第3条,
e、 int1.ToString(),
e、 第5条,
e、 小数1.ToString(),
e、 小数点2.ToString()
})
.ToList();
当我试图从
列表
中读取值时,每个其他项(
列表
)中元素的顺序是相反的。所有奇数指数的顺序都相反

这就是我得到的

[string1,string2,string3,in1,string5,小数点1,小数点2]

[小数2,小数1,字符串5,in1,字符串3,字符串2,字符串1]

[string1,string2,string3,in1,string5,小数点1,小数点2]

[小数2,小数1,字符串5,in1,字符串3,字符串2,字符串1]

等等..

我似乎不明白为什么会这样。
有什么想法吗?

我不知道您得到这个结果的确切原因,但它可能是作为查询的一部分运行的
Select
表达式,即它在您的数据库上运行,而不是在进程中运行。SQL查询不尊重排序,除非它们有一个
orderby
子句

要运行
Select
methodin-process并尊重排序,请在语句中添加
AsEnumerable()
。这将强制语句使用
可枚举。选择
扩展方法,而不是
可查询。选择

dbContext
  .dbSet.Where(e => e.FILLDATE.Equals(tradingDate))
  .AsEnumerable()
  .Select(e => new List<Object> { ... } );
dbContext
.dbSet.Where(e=>e.FILLDATE.Equals(tradingDate))
.可计算的()
.选择(e=>新列表{…});

可能数据插入列表的顺序错误。您要删除的代码看起来很好。问题中提到了初始化顺序,但是内部的顺序是如何混乱的,而且也是以一种整洁的方式。只有奇数索引具有逆序列表,并且顺序完全相反..正如我所说的,您阅读的代码是正确的。初始化代码一定是错误的。我正在从数据库读取数据,数据在数据库中是实心的。Entity使用EDMX映射文件链接数据库表/列。如果数据库正确,则映射有问题。但是没有意义,只有奇数行是向后的,除非映射表在读写之间改变。如果将偶数行写入数据库,然后更改edmx文件,然后保存奇数行,会发生什么情况?但这并不能解释数据库是正确的。我会查看edmx文件,看看它是否正确。但我仍然不太明白解释<代码>排序依据
用于对结果数据集中的行进行排序。但是,为什么列的顺序在行的每次迭代中都会发生变化呢?它将运行一个子select语句来获取列。我认为您最好看看该语句生成的SQL,例如,通过在LinqPad中运行它,然后您将能够了解导致这种情况的原因。