Cannot implicitly convert type 'System.Collections.Gener

本文关键字:System Collections Gener implicitly convert type Cannot | 更新日期: 2023-09-27 18:18:29

我有一个问题,返回一个列表,下面是我的代码:

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

result返回一个匿名类型,因为我返回一个连接查询,返回类型不再是tblLaborBankAccount

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

谢谢。

Cannot implicitly convert type 'System.Collections.Gener

select语句是一个投影,它创建了一个匿名类。

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

您可以像这样返回List<Tuple<tblBankName, tblLaborBankAccount>>:

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 class BankAccountDetails
{
     public tblBankName BankName {get;set;}
     public tblLaborBankAccount BankAccount {get;set;}
}

然后返回它们的列表:

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

返回您自己的类可能是最简单的解决方案,并且清楚地表明从您的方法返回的是什么。参见:返回匿名类型的结果?

相关文章: