C# 无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generi”
我想用linq或lambda连接3个表的上下文,但我得到了一个错误 这是我的林肯 错误: 无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.IEnumerable” 您返回的任务由匿名类型列表组成。我添加了一个ToList,不确定这是否是您想要的,但我假设这是实体框架,实体框架是延迟执行的。此外,您还没有提供TblCharityAccount是否与您的匿名类型符合相同的账单,因此您可能需要为此创建一个新类型C# 无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generi”,c#,sql,entity-framework,linq,lambda,C#,Sql,Entity Framework,Linq,Lambda,我想用linq或lambda连接3个表的上下文,但我得到了一个错误 这是我的林肯 错误: 无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.IEnumerable” 您返回的任务由匿名类型列表组成。我添加了一个ToList,不确定这是否是您想要的,但我假设这是实体框架,实体框架是延迟执行的。此外,您还没有提供TblCharityAccount是否与您的匿名类型符合相同的账单,因此您可能需要为此创建一个新类型 public
public class JoinTableResult
{
public string BaseTypeTitle { get ; set; }
public string BaseTypeCode { get ; set; }
public string CommonBaseTypeId { get ; set; }
public string BaseCode { get ; set; }
public string BaseValue { get ; set; }
public string CommonBaseDataId { get ; set; }
}
public async Task<IEnumerable<JoinTableResult>> GetAccountasync()
{
BaseData_Contexts db1 = new BaseData_Contexts();
BaseType_Context db2 = new BaseType_Context();
var joined = (from ep in _db.TblCharityAccounts
join e in db1.TblCommonBaseData on ep.BankId equals e.CommonBaseDataId
join c in db2.TblCommonBaseTypes on e.CommonBaseTypeId equals c.CommonBaseTypeId
select new
{
c.BaseTypeTitle,
c.BaseTypeCode,
c.CommonBaseTypeId,
e.BaseCode,
e.BaseValue,
e.CommonBaseDataId
}).ToList();
return joined;
}
选择TblCharityAccount的实例而不是创建匿名类型扫描您告诉我如何操作?您可以使用新的TblCharityAccount{…}而不是新的{…}来创建此lambda或linq for me吗或者你可以简单地使用select ephow我可以使用此代码来代替wht i send return你需要定义一个类型你不能返回匿名类型这就是你所拥有的,请看,如果你不想使用,你必须创建另一个类型来选择。我编辑了我的答案,向你展示了如何在匿名测试中使用此类型。。我不知道你的类型,所以我在JoinedTableResult类中对所有类型都使用了string
public class JoinTableResult
{
public string BaseTypeTitle { get ; set; }
public string BaseTypeCode { get ; set; }
public string CommonBaseTypeId { get ; set; }
public string BaseCode { get ; set; }
public string BaseValue { get ; set; }
public string CommonBaseDataId { get ; set; }
}
public async Task<IEnumerable<JoinTableResult>> GetAccountasync()
{
BaseData_Contexts db1 = new BaseData_Contexts();
BaseType_Context db2 = new BaseType_Context();
var joined = (from ep in _db.TblCharityAccounts
join e in db1.TblCommonBaseData on ep.BankId equals e.CommonBaseDataId
join c in db2.TblCommonBaseTypes on e.CommonBaseTypeId equals c.CommonBaseTypeId
select new
{
c.BaseTypeTitle,
c.BaseTypeCode,
c.CommonBaseTypeId,
e.BaseCode,
e.BaseValue,
e.CommonBaseDataId
}).ToList();
return joined;
}