我有很長的LINQ到實體查詢: -LINQ到實體無法識別方法
reports = db.CallProfileDailies
.Join(db.ReportDailyTotals,
cpd => cpd.Date,
rdt => rdt.Date,
(cpd, rdt) => new { cpd = cpd, rdt = rdt })
.Where(a => a.cpd.Skill == a.rdt.Skill)
.Join(db.SummaryIntervalTotals,
a => a.rdt.Date,
sit => sit.Date,
(a, sit) => new { cpd = a.cpd, rdt = a.rdt, sit = sit })
.Where(a => a.rdt.Skill == a.sit.Skill)
.Select((a, i) => new ReportModel
{
AverageAbandonDelay = a.sit.AvgAbanTime,
AverageAfterCallWorkTime = a.sit.AvgAcwTime,
AverageHandleTime = (a.sit.AvgAcwTime + a.sit.AvgAcdTime),
AverageSpeedOfAnswer = a.sit.AvgSpeedAns,
AverageTalkTime = a.sit.AvgAcdTime,
CallsAnswered = a.sit.AcdCalls,
Date = a.sit.Date.ToString(),
MaximumDelay = a.sit.MaxDelay,
PercentageAbandon = (a.sit.AbanCalls/(a.sit.AcdCalls + a.sit.AbanCalls)),
TotalCallsAbandon = a.sit.AbanCalls,
TotalCallsOffered = (a.sit.AcdCalls + a.sit.AbanCalls),
TotalHandleTime = (a.rdt.HoldTime + a.rdt.AcdTime + a.rdt.AcwTime)
}).Take(5).ToList();
我在運行時收到以下錯誤: -
LINQ到實體不承認 該方法 「System.Linq.IQueryable`1 [ExpediaReports.Models.ReportModel] 選擇[<> F_ AnonymousType1`3,ReportModel](System.Linq.IQueryable`1 [<>˚F _Ano [ExpediaReports.CallProfileDaily,ExpediaReports.ReportDailyTotal,ExpediaReports.SummaryIntervalTotal]], System.Linq.Expressions.Expression`1 [System.Func`3 [<> f__AnonymousType1`3 [ExpediaReports.CallProfileDaily,ExpediaReports.ReportDailyTotal,ExpediaReports .SummaryIntervalTotal],System.Int32,ExpediaReports.Models.ReportModel]])' 方法,並且此方法不能被 翻譯成存儲表達式。
我只是想了解這個錯誤是什麼意思。我甚至無法閱讀它(Linq To Entities)無法識別的方法。
如何閱讀此錯誤並確定無法識別的方法,以便相應地更改我的查詢?
什麼這些字符這裏的意思:'<>「等
哇,你有沒有聽說過你可以在多個表達式中表達同一個東西,並且它使得你的代碼更易於閱讀和調試:)是否有任何理由將所有記錄映射到ReportModel,並且之後只需要5個他們,先拿5先不會更快? – Silx 2011-03-30 09:57:26