2012-08-03 92 views
2

我試圖通過在主策略和子策略(policy.ID,policy.POL2下面)之間分割的保險策略支付來進行分組。理想情況下,無論付款是否分割,我都需要最後3筆付款,到期日,付款日期,金額和暫記金額。LINQ to Entities不支持指定的類型成員

如果付款被拆分,我需要將支付的金額總和到主要政策和次級政策中,但其他三個字段應該是相同的,所以我不希望重複記錄。

我覺得像這樣的工作,但我得到一個

指定的類型成員「PAYDUE」不支持LINQ到 實體。僅支持初始化程序,實體成員和實體導航 屬性。

因爲PAYDUE是日期時間。正如你看到的,我試圖用內建的EntityFunctions方法,但仍然得到同樣的錯誤

var mc = new ModelContext(); 
var policy = mc.Polmasts.Find("N400603"); 
var payments = from p in mc.Paymnts 
       where p.POLICY == policy.ID || 
        p.POLICY == policy.POL2 
       orderby p.PAYPD_ descending 
       group p by p.PAYPD_ 
       into g 
       select new 
         { 
          payduedate = EntityFunctions.TruncateTime(g.FirstOrDefault().PAYDUE), 
          paypaiddate = EntityFunctions.TruncateTime(g.FirstOrDefault().PAYPD), 
          paymentamount = g.Sum(a=>a.AMOUNT), 
          paysuspense = g.FirstOrDefault().SUSP 
         }; 
foreach (var payment in payments) 
{ 
    Console.WriteLine("%=========== \n PAY DUE DATE: {0} \n PAYMENT DATE: {1} \n AMOUNT: {2} \n SUSPENSE: {3}", payment.payduedate, payment.paypaiddate, payment.paymentamount, payment.paysuspense); 
} 

回答

2

看看this question。我猜PAYDUE不是表模式的一部分?

您可能會嘗試分離出最終選擇,以便在執行選擇之前使其具體化。像這樣的東西(我還沒有測試過它)

var paymentsRaw = (from p in mc.Paymnts 
       where p.POLICY == policy.ID || 
        p.POLICY == policy.POL2 
       orderby p.PAYPD_ descending 
       group p by p.PAYPD_).ToList(); 

var payments = from g in paymentsRaw 
       select new 
         { 
          payduedate = EntityFunctions.TruncateTime(g.FirstOrDefault().PAYDUE), 
          paypaiddate = EntityFunctions.TruncateTime(g.FirstOrDefault().PAYPD), 
          paymentamount = g.Sum(a=>a.AMOUNT), 
          paysuspense = g.FirstOrDefault().SUSP 
         }; 
+0

該代碼剛剛超時。但是PAYDUE和PAYPD都是原始的Paymnt模式。 – 2012-08-03 19:17:50

相關問題