Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/315.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/linq/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# LINQ to实体中不支持指定的类型成员_C#_Linq_Entity Framework 4.1 - Fatal编程技术网

C# LINQ to实体中不支持指定的类型成员

C# LINQ to实体中不支持指定的类型成员,c#,linq,entity-framework-4.1,C#,Linq,Entity Framework 4.1,我正在尝试按主保单和子保单(下面的policy.ID,policy.POL2)划分一组保单付款。理想情况下,我想要最后3笔付款,到期日、付款日期、金额和暂记金额,无论付款是否拆分 如果付款被拆分,我需要将支付给主保单和子保单的金额相加,但其他三个字段应该相同,因此我不希望重复记录 我原以为这样做行得通,但我得到了一个 LINQ to中不支持指定的类型成员“PAYDUE” 实体。仅初始值设定项、实体成员和实体导航 支持属性 因为PAYDUE是一个日期时间。如您所见,我尝试使用内置EntityFun

我正在尝试按主保单和子保单(下面的policy.ID,policy.POL2)划分一组保单付款。理想情况下,我想要最后3笔付款,到期日、付款日期、金额和暂记金额,无论付款是否拆分

如果付款被拆分,我需要将支付给主保单和子保单的金额相加,但其他三个字段应该相同,因此我不希望重复记录

我原以为这样做行得通,但我得到了一个

LINQ to中不支持指定的类型成员“PAYDUE” 实体。仅初始值设定项、实体成员和实体导航 支持属性

因为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);
}
看一看。我猜PAYDUE不是表模式的一部分

您可以尝试分离最终选择,以便在执行选择之前使其具体化表。类似这样的东西(不过我还没有测试过!)


那代码只是超时了。但是PAYDUE和PAYPD都在原始Paymnt模式中。
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
                       };