C# 无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generi”

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

我想用linq或lambda连接3个表的上下文,但我得到了一个错误

这是我的林肯

错误:

无法将类型“System.Linq.IQueryable”隐式转换为“System.Collections.Generic.IEnumerable”

您返回的任务由匿名类型列表组成。我添加了一个ToList,不确定这是否是您想要的,但我假设这是实体框架,实体框架是延迟执行的。此外,您还没有提供TblCharityAccount是否与您的匿名类型符合相同的账单,因此您可能需要为此创建一个新类型

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;
}