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