2012-08-03 69 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

相关问题