LINQ 列中的方法调用
本文关键字:方法 调用 LINQ | 更新日期: 2023-09-27 18:32:19
我有以下 LINQ 查询:
//myRepository.GetClients(); returns an IQueriable<>
var AllClients = myRepository.GetClients();
var ClientReports = from c in FirmECFIs
select new ClientReport
{
FirmSerialNumber = c.SerialNumber,
FirmName = c.Name,
Year = c.Year,
Month = c.Month,
CustID = c.CustID,
TotalCount =myRepository.GetCount(c.SerialNumber, billingYear, billingMonth),
TotalPrice = "0"
};
我收到一个错误,上面写着"...不支持转换为 SQL"在我从 TotalCount 列中删除方法调用并分配一个静态值的地方,它工作正常。看起来 LINQ 无法将方法调用转换为 tSQL
谁能帮我解决这个问题?
谢谢
GetCount() 方法的来源:
public int GetCount(int SerialNumber, string billingYear, string billingMonth)
{
var Count = CreateDataContext().myView.Where(c => c.SerialNumber == SerialNumber)
.Where(c => c.Year == Convert.ToInt32(billingYear)).Where(c => c.Month == Convert.ToInt32(billingMonth));
return Count.ToList().Count;
你的仓库在这里并没有很好地完成它的工作 - 事实上,它似乎是一个非常泄漏的抽象,充其量对你没有多大帮助(因为你仍然在仓库之外查询)。
一种方法是将GetClientReports
的方法引入存储库,从而为您生成此结果。假设这只是 Linq 到 Sql 下面的,你可以只使用嵌套查询或在该级别加入。
您可以在该行中执行另一个 SQL/LINQ 查询,但不能调用另一个 C# 函数。它不能将其转换为SQL。