0

SQLで次のクエリを作成しましたが、linqでStatusAndTrackingNotesテーブル結合を実装する方法を見つけることができません:

SELECT *
FROM [Application] APP
join User USR on APP.ApplicationId = USR.UserApplicationId
join 
(Select MAX(TrackingDate) as MaxDateTD,TrackingApplicationId
 From StatusAndTrackingNotes 
 where TrackingLoanType = 1 and ((TrackingStatusCode <= 52 and TrackingStatusCode >= 50) or TrackingStatusCode = 62)
 group by TrackingApplicationId) MTND on APP.ApplicationId = MTND.TrackingApplicationId
join Details DTL on APP.ApplicationId = DTL.ApplicationId
join ApplicationFees AF on APP.ApplicationId = AF.ApplicationId
where APP.LatestStatus = 'F' and DTL.Type = 1 and DTL.FundingDate >= '2011-06-01'  and   DTL.FundingDate <= '2013-06-30'
    and AF.FirstRefPaidDate is not null

構文について親切に助けてください。まず、結合を含む単純なクエリを使用してから、

([Linq Query]).GroupBy(i => i.TrackingApplicationId).Select(g => g.OrderByDescending(c => c.TrackingDate).FirstOrDefault());

しかし、結果は返されません。親切に助けてください。前もって感謝します

4

1 に答える 1

1

別のクエリとして作成StatusAndTrackingNotesし、結合して「メインクエリ」にグループ化することで解決します。すなわち:

var trackingQuery =
    from t in statusAndTrackingNotes
    where t.TrackingLoanType == 1 && (t.TrackingStatusCode <= 52 && t.TrackingStatusCode >=50) || t.TrackingStatusCode == 62
    group t by t.TrackingApplicationId into trackings
    select new 
    { 
        TrackingApplicationId = trackings.Key,
        MaxDate = trackings.Max(t => t.TrackingDate)
    };

var appQuery =
    from app in Application
    join t in trackingQuery on app.ApplicationId equals t.TrackingApplicationId
    /* other joins here */
    select new
    {
        app,
        t.MaxDate,
    };
于 2013-04-16T13:16:51.323 に答える