4

これをEntity Frameworkで作成したいと思います。親のフィールドと最新の子レコードのフィールドを含む新しいオブジェクトのリスト。SQL を相関サブクエリとして記述します。

SELECT p.PolicyNumber, p.HomeState, pt.RevisionDate, pt.TranStatus
FROM dbo.Policy p
JOIN dbo.PolicyTran pt ON p.Id = pt.Policy_Id
AND pt.RevisionDate = (
    SELECT MAX(mpt.RevisionDate)
    FROM dbo.PolicyTran mpt
    WHERE p.Id = pt.Policy_Id
    )
WHERE p.HomeState = 'NY'

Policy のコンテキストには、トランザクションのリスト (PolicyTran) へのナビゲーションがあります。

var query = context.Policies.Include(t => t.PolicyTransactions);

何を試しても、Linq が正しくないか、SQL が正しくありません。専門家を呼ぶ時が来ました。

4

2 に答える 2

-2

これは 1 つの方法ですが、2 つの個別のデータベース ヒットがあります。最初のステートメントを 2 番目のステートメントに埋め込むこともできますが、手元にコンパイラがないため、今の私にとってはより複雑です。

var maxRevisionDate = context.PolicyTran.Max(x => x.RevisionDate);

var results = context.Policies.Where(x => x.PolicyTran.RevisionDate == maxRevisionDate 
               && x.HomeState == "NY").Include("PolicyTran")

エンティティ名はデータベース テーブルと同じであると想定しています。この結果は、Policies とそれに対応する PolicyTrans の IEnumerable です。

于 2013-07-13T07:08:12.253 に答える