首先你不需要ToList()
因为你不需要列表:
db.MSTs
.Select(x => new { x.Id, x.Code, x.Desc, x.L1, x.L2 })
.OrderBy(h => h.Code)
现在你需要的类型是MST
。如果这是 EF 知道的类型,您可以将其直接包含在Select
:
db.MSTs
.Select(x => new MST{ Id = x.Id, Code =x.Code, Desc = x.Desc, L1 =x.L1, L2 =x.L2 })
.OrderBy(h => h.Code)
但事实并非如此,因此您需要从 EF 中断到内存中AsEnumerable
然后创建MST
在那之后:
IEnumerable<MST> n = db.MSTs
.Select(x => new { x.Id, x.Code, x.Desc, x.L1, x.L2 }).OrderBy(h => h.Code)
.AsEnumerable()
.Select(x => new MST{ Id = x.Id, Code =x.Code, Desc = x.Desc, L1 =x.L1, L2 =x.L2 });
(如果出于某种原因您确实需要ToList()
你可以用它来代替AsEnumerable()
,但你可能最好只进行决赛ToList()
毕竟,获得您真正想要的类型的列表)。
如果您使用异步代码,那么我们同样会将其放在等待之后:
IEnumerable<MST> n = (await db.MSTs
.Select(x => new { x.Id, x.Code, x.Desc, x.L1, x.L2 })
.OrderBy(h => h.Code)
.ToListAsync())
.Select(x => new MST{ Id = x.Id, Code =x.Code, Desc = x.Desc, L1 =x.L1, L2 =x.L2 });