C# 无法隐式转换类型';System.Collections.Generic.List<;System.Collections.Generic.IEnumerable<;xxx>&燃气轮机';至';System.Collections.Generic.List<;xxx>;
我得到以下错误。我在谷歌上搜索了一天多,但我找不到确切的解决方案,请帮助我谢谢 错误:无法隐式转换类型C# 无法隐式转换类型';System.Collections.Generic.List<;System.Collections.Generic.IEnumerable<;xxx>&燃气轮机';至';System.Collections.Generic.List<;xxx>;,c#,entity-framework,C#,Entity Framework,我得到以下错误。我在谷歌上搜索了一天多,但我找不到确切的解决方案,请帮助我谢谢 错误:无法隐式转换类型 System.Collections.Generic.List 到 System.Collections.Generic.List 我使用了以下代码 List<ShareholderUser> list = new List<ShareholderUser>(); list = dataContext.EJMCShareholderApprovals
System.Collections.Generic.List
到
System.Collections.Generic.List
我使用了以下代码
List<ShareholderUser> list = new List<ShareholderUser>();
list = dataContext.EJMCShareholderApprovals
.Include(s => s.Shareholder.ShareholderUsers)
.Where(e => e.EJMCRequestId == requestId)
.Select(s => s.Shareholder.ShareholderUsers
.Where(x => x.AccessMode == true))
.ToList();
List List=新列表();
list=dataContext.EJMCShareholderApprovals
.包括(s=>s.Holder.ShareholderUsers)
.Where(e=>e.EJMCRequestId==requestId)
.选择(s=>s.Holder.ShareholderUsers
.其中(x=>x.AccessMode==true))
.ToList();
这应该可以吗
var list = dataContext.EJMCShareholderApprovals
.Include(s => s.Shareholder.ShareholderUsers)
.Where(e => e.EJMCRequestId == requestId)
.Select(s => s.Shareholder.ShareholderUsers
.Where(x => x.AccessMode == true)).ToList();
虽然您正在向股东用户选择?您是要获取股东列表还是股东列表
.Select(s => s.Shareholder.ShareholderUsers
现在的问题是,你正在选择一系列的序列——每个股东的股东用户项目的一系列。如果你只是想要一个ShareholderUser项目的列表,你需要将结果展平。使用
SelectMany
最容易做到这一点,在本例中,它实际上可以取代您的Select
调用
List<ShareholderUser> list = dataContext.EJMCShareholderApprovals
.Where(e => e.EJMCRequestId == requestId)
.SelectMany(s => s.Shareholder.ShareholderUsers)
.Where(x => x.AccessMode == true)
.ToList();
List List=dataContext.EJMCShareholderApprovals
.Where(e=>e.EJMCRequestId==requestId)
.SelectMany(s=>s.Holder.ShareholderUsers)
.Where(x=>x.AccessMode==true)
.ToList();
请注意,将查询拆分为多行也会使阅读变得更加简单。此外,如果要立即给它一个不同的值,那么将
list
变量初始化为newlist
也没有意义。我还删除了Include
调用,因为这是不必要的-您在查询中显式选择了股东.ShareholderUsers
,因此不需要包含它。这将编译,但我认为它不会满足OP的要求。他们显式地为list
指定了一个类型,这表明他们知道自己想要什么类型。。。您已经有效地更改了列表的类型
,而不使用查询。我认为关键是要更改查询。我认为.Include(s=>s.holder.ShareholderUsers)
行是多余的,因为我们选择了s.holder.ShareholderUsers
无论如何:@Kobi:我会添加它作为一个注释,但我对EF的了解还不足以自信地说出来……如果您只使用您选择的内容,则无需添加包含。仅当您希望包含特定于上下文的内容,否则将延迟加载。谢谢@Jon Skeet。我得到了我所需要的准确输出。Kobi你是对的,.Include(s=>s.ShareholderUsers)是多余的。我删除了它,谢谢你的支持comment@JanneMatikainen:谢谢。在sree的确认下,我修改了答案,删除了Include
调用。