C# 无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”

C# 无法将类型“System.Collections.Generic.List”隐式转换为“System.Collections.Generic.List”,c#,linq,generics,C#,Linq,Generics,我在返回列表时遇到问题, 这是我的密码: public List<tblLaborBankAccount> ListAllLaborBankAccountByLaborID (int laborID) { var result = (from b in context.tblBankNames join c in context.tblLaborBankAccounts

我在返回列表时遇到问题, 这是我的密码:

    public List<tblLaborBankAccount> ListAllLaborBankAccountByLaborID (int laborID)
    {
        var result = (from b in context.tblBankNames
                      join c in context.tblLaborBankAccounts
                      on b.bknBankNameID equals c.bknBankNameID
                      where c.lbrLaborID == laborID
                      select (new { c, b })
                              ).ToList();

        return result;
    }
结果返回一个匿名类型,因为我正在返回一个连接查询,返回的类型不再是tblLaborBankAccount

我应该为这种匿名类型创建一个新类还是有更好的方法


谢谢。

返回您自己的类可能是最简单的解决方案,它清楚地说明了从方法返回的内容。
另请参见:

select语句是创建匿名类的投影

匿名类可以在方法中使用,但不能作为结果返回

您可以返回如下列表:

public List<Tuple<tblBankName, tblLaborBankAccount>> ListAllLaborBankAccountByLaborID (int laborID)
{
    var result = (from b in context.tblBankNames
                  join c in context.tblLaborBankAccounts
                  on b.bknBankNameID equals c.bknBankNameID
                  where c.lbrLaborID == laborID
                  select (new Tuple<tblBankName, tblLaborBankAccount>( c, b ))
                          ).ToList();

    return result;
}
然后返回它们的列表:

public List<BankAccountDetails> ListAllLaborBankAccountByLaborID (int laborID)
{
    var result = (from b in context.tblBankNames
                  join c in context.tblLaborBankAccounts
                  on b.bknBankNameID equals c.bknBankNameID
                  where c.lbrLaborID == laborID
                  select (new BankAccountDetails{ BankName =  c, BankAccount =  b })
                          ).ToList();

    return result;
}

什么是tblLaborBankAccount?您可以创建它的实例并返回列表?。。或者,您可以简单地选择c并返回列表。但是与tblBankNames连接有什么意义呢?您当前正在从两个表返回数据。您想要两个表中的数据吗?如果需要,您希望如何将其放入一个只有一种类型的列表中?我不希望如此。我只是想知道是否有一种更简单的方法来代替创建一个新类?解决方案实际上取决于您需要返回的信息。因此,您在已删除答案中的注释很重要:我想返回如下内容:选择new{c.accNumber,b.bkname}
public List<BankAccountDetails> ListAllLaborBankAccountByLaborID (int laborID)
{
    var result = (from b in context.tblBankNames
                  join c in context.tblLaborBankAccounts
                  on b.bknBankNameID equals c.bknBankNameID
                  where c.lbrLaborID == laborID
                  select (new BankAccountDetails{ BankName =  c, BankAccount =  b })
                          ).ToList();

    return result;
}