我有以下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
任何人都可以帮我解决这个问题吗?
由于
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;
答案 0 :(得分:3)
你的存储库并没有真正完成它的工作 - 实际上它似乎是一个非常漏洞的抽象,最多对你没什么帮助(因为你仍然在存储库之外查询)。
一种方法是向您的存储库引入一个方法GetClientReports
,为您生成此结果。假设这只是Linq to Sql,你可以使用嵌套查询或在该级别加入。
答案 1 :(得分:2)
您可以在该行中执行另一个SQL / LINQ查询,但不能调用另一个C#函数。它无法将其转换为SQL。