3

我有以下 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;
4

2 回答 2

3

您的存储库在这里并没有真正做好它的工作 - 实际上它似乎是一个非常容易泄漏的抽象,充其量对您没有多大帮助(因为您仍在存储库之外进行查询)。

一种方法是将一种方法引入GetClientReports您的存储库,为您生成此结果。假设这只是下面的 Linq to Sql,您可以使用嵌套查询或在该级别连接。

于 2012-04-26T21:47:32.797 回答
2

您可以在该行中执行另一个 SQL/LINQ 查询,但不能调用另一个 C# 函数。它无法将其转换为 SQL。

于 2012-04-26T21:46:38.107 回答