0

CI_CLIENTRISK(SCDタイプ2)...とQB_INVOICES_HEADER(edmxスクリーンショット)の2つのテーブルを使用しています。

ClientIDを介して参加できます。基本的にこのクエリを複製したい:

SELECT a.ClientID,
    MAX(b.InvoiceDt) AS MaxInvoiceDt
    (omitted for brevity)
FROM CI_CLIENTRISKADJS a
INNER JOIN QB_INVOICES_HEADER b
ON a.ClientID = b.ClientID
WHERE a.IsActive = 1
GROUP BY a.ClientID
ORDER BY MaxInvoiceDt DESC

これが私がこれまでに持っているものです。レコードを返していません。

using (var db = new PLOGITENS01Entities())
        {
        var rvClientRiskAdjs = db.CI_CLIENTRISKADJS
            .Take(50)
            .Join(db.QB_INVOICES_HEADER,
                a => a.ClientID,
                b => b.ClientID,
                (a, b) => new { Risk = a, Invoices = b })
            .Where(a => a.Risk.IsActive == 1)
            .OrderByDescending(o => o.Invoices.InvoiceDt)
            .Select(c => new ClientRiskModel()
            {
                ClientRiskId = c.Risk.ClientRiskID,
                ClientName = c.Risk.CI_CLIENTLIST.ClientName,
                ClientId = c.Risk.ClientID,
                ClientRiskAdjs = c.Risk.ClientRiskAdjs,
                RecordValidStartDt = c.Risk.RecordValidStartDt,
                RecordValidEnddt = c.Risk.RecordValidEnddt,
                IsActive = c.Risk.IsActive
            })
            .ToList();

        return View(new GridModel(rvClientRiskAdjs));
        }
4

2 に答える 2

1

.Take(50)メソッドを final の後.Select、前に配置してみてください.ToList()。そのままでは、最初のテーブルの最初の 50 レコードのみを取得し、そこから結合しています。最初のテーブルの最初の 50 レコードには、2 番目のテーブルへの結合がないと仮定しています。したがって、結果には 0 レコードが含まれます。

于 2012-10-27T01:12:33.923 に答える
0

この投稿を読んで、このソリューションに出くわしました: https://stackoverflow.com/a/157919/1689144

var rvClientRiskAdjs = (from ri in db.CI_CLIENTRISKADJS
                        join qb in
                            (from qb in db.QB_INVOICES_HEADER
                             orderby qb.InvoiceDt ascending
                             group qb by qb.ClientID into grp
                             select new
                             {
                                 InvoiceDt = grp.Max(s => s.InvoiceDt),
                                 ClientID = grp.Key
                             })
                        on ri.ClientID equals qb.ClientID
                        orderby qb.InvoiceDt descending
                        where ri.IsActive == 1
                        select new ClientRiskModel()
                        {
                            ClientRiskId = ri.ClientRiskID,
                            ClientName = ri.CI_CLIENTLIST.ClientName,
                            ClientId = ri.ClientID,
                            ClientRiskAdjs = ri.ClientRiskAdjs,
                            RecordValidEnddt = ri.RecordValidEnddt,
                            RecordValidStartDt = ri.RecordValidStartDt
                        })
                        .ToList();
于 2012-10-27T02:01:31.453 に答える