C#学习教程:在EF6中将匿名类型转换为IEnumerable我想从表中获取5列并以IEnumerable类型返回它们。我的代码是:IEnumerablen=newList();n=db.MSTs.Select(x=>new{x.Id,x.Code,x.Desc,x.L1,x.L2}).OrderBy(h=>h.Code).ToList();但它给了我错误Cannotimplicitlyconverttype'System.Collection.Generic.List'to'System.Collection.Generic.IEnumerable<>'我该如何解决?首先,您不需要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=>newMST{Id=x.Id,Code=x.Code,Desc=x.Desc,L1=x.L1,L2=x.L2}).OrderBy(h=>h.Code)但事实并非如此,所以你需要使用AsEnumerable从EF进入内存,然后创建MST之后:IEnumerablen=db.MST。选择(x=>new{x.Id,x.Code,x.Desc,x.L1,x.L2}).OrderBy(h=>h.Code).AsEnumerable().Select(x=>newMST{Id=x.Id,Code=x.Code,Desc=x.Desc,L1=x.L1,L2=x.L2});(如果出于某种原因你真的需要ToList(),你可以使用它而不是NotAsEnumerable(),但你可能最好在所有这些之后放置一个最终的ToList()以获得你真正想要的类型的列表).如果您使用的是异步代码,我们还将其放在await之后:IEnumerablen=(awaitdb.MSTs.Select(x=>new{x.Id,x.Code,x.Desc,x.L1,x.L2}).OrderBy(h=>h.Code).ToListAsync()).Select(x=>newMST{Id=x.Id,Code=x.Code,Desc=x.Desc,L1=x.L1,L2=x.L2});您需要简单地转换类型MST而不是匿名类型:-n=db.MSTs.Select(x=>newMST{Id=x.Id,Code=x.Code,Desc=x.Desc,L1=x.L1,L2=x.L2}).OrderBy(h=>h.Code);如果提供,您将在MST中拥有所有这些属性。此外,它不应该是一个映射实体,它应该是一个DTO。此外,您不需要ToList,因为Select返回IEnumerable。更新:由于它是实体框架中的映射实体,一种方法是先投影匿名类型,然后再投影模型类型,如下所示:-以上就是C#学习教程:将匿名类型转换为EF6中的IEnumerable分享内容,如果对你有用,需要了解更多C#学习教程,希望你多多关注—n=db.MSTs.Select(x=>new{x.Id,x.Code,x.Desc,x.L1,x.L2}).OrderBy(h=>h.Code).AsEnumerable()Select(x=>newMST{Id=x.Id,Code=x.Code,Desc=x.Desc,L1=x.L1,L2=x.L2});本文收集自网络,不代表立场。如涉及侵权,请点击右侧联系管理员删除。如需转载请注明出处:
