我有下面的代碼:如何解決問題「無法將表達式...轉換爲SQL,無法將其視爲本地表達式」。
void Main()
{
var q = from a in Applicants
where(a.Claims.Any())
select a.Claims.Sum(c => c.TotalClaimAmount());
q.Dump();
}
public static class MyExt
{
public static decimal TotalClaimAmount(this Claim c)
{
var t = c.Accommodations.Sum(a => a.AmountClaimed) +
c.MealAllowances.Sum(ma => ma.AmountClaimed) +
c.Meals.Sum(m => m.AmountClaimed) +
c.Mileages.Sum(mi => mi.AmountClaimed) +
c.Others.Sum(o => o.AmountClaimed) +
c.ParkingTransits.Sum(pt => pt.AmountClaimed) +
c.Travels.Sum(tr => tr.AmountClaimed);
return (decimal)t;
}
}
當我運行它在LinqPad得到以下問題:
出現InvalidOperationException:無法翻譯表達「a.Claims.Sum(C => c.TotalClaimAmount()) '轉換爲SQL,不能將其視爲本地表達式。
請幫我一把。非常感謝
當然,這會在客戶端上運行一切,導致N + 1問題和可怕的性能。 – usr
maybe.but我沒有看到另一種(更好)的方式:) –