var gridInfo = (from leader in db.LeaderAdminAccesses
join emp in db.Employees
on leader.ID equals emp.DPSID
select new { ID = leader.ID, NAME = emp.FirstName + " " + emp.LastName }).Distinct();
var temp = gridInfo.Select(x => new List<string> { x.ID, x.NAME }).ToArray();
当我在gridInfo
之前查看temp
(在调试器中)时,我看到如下列表:
0 {ID =&#34; 123&#34;,NAME =&#34; John Smith&#34;}
1 {ID =&#34; 234&#34;,NAME =&#34; Jane Doe&#34;}
当我查看temp
时,我看到它是这样的吗?
[0]计数= 2
[0] "123" [1] "John Smith"
[1]数= 2
[0] "Jane Doe" [1] "234"
我应该注意,如果我遗漏.Distinct()
为什么这样做?我该怎么办,所以它不会像这样回来?
答案 0 :(得分:2)
您的查询正在作为SQL语句执行。如果没有order-clause,则行的顺序在任何SQL语句中都不是确定性的。您可能希望使用内存中的数据进行此类后处理。
var temp = gridInfo.AsEnumerable().Select(x => new List<string> { x.ID, x.NAME }).ToArray();
AsEnumerable()
表示您希望在内存中处理查询的其余部分,而不是SQL语句。