无法将类型'System.Collections.Generic.List <anonymoustype#1>'隐式转换为'System.Collections.Generic.List <model.tbllaborbankaccount>'</model.tbllaborbankaccount> </anonymoustype#1>

时间:2014-08-16 10:38:37

标签: c# linq generics

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

    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

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

感谢。

2 个答案:

答案 0 :(得分:3)

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

或者你可以声明一个struct / class来包含你的结果:

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

答案 1 :(得分:2)

返回自己的类可能是最简单的解决方案,并明确说明从您的方法返回的内容。 另见:Return anonymous type results?

相关问题