我在返回列表时遇到问题 这是我的代码:
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
。
我应该为这种匿名类型创建一个新类,还是有更好的方法?
感谢。
答案 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?