3

メイン ポリシーとサブ ポリシー (以下の policy.ID、policy.POL2) の間で分割される保険ポリシーの支払いをグループ化しようとしています。理想的には、支払いが分割されたかどうかに関係なく、最後の 3 回の支払い、期日、支払日、金額、および保留金額が必要です。

支払いが分割された場合、メイン ポリシーとサブポリシーに支払われた金額を合計する必要がありますが、他の 3 つのフィールドは同じでなければならないので、レコードが重複することは望ましくありません。

私はこのようなものがうまくいくと思ったが、私は

指定された型メンバー 'PAYDUE' は、LINQ to Entities ではサポートされていません。初期化子、エンティティ メンバー、およびエンティティ ナビゲーション プロパティのみがサポートされています。

PAYDUE は DateTime であるためです。ご覧のとおり、組み込みの 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);
}
4

1 に答える 1

3

この質問を見てください。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
                       };
于 2012-08-03T17:29:12.167 に答える