0

このSQLクエリをlinqで再現するのを手伝ってもらえますか?

   SELECT DATA_MAX_qh.DATA_MAX,DATA_MAX_qh.[QUOT_CODE],[QUOT_VALUE],q.QUOT_DESCR,q.QUOT_DESCR_ALIAS
            FROM [dbo].[QUOTATION_HISTORY] qh INNER JOIN
            (SELECT MAX(QUOT_DATA) DATA_MAX, QUOT_CODE
            FROM [dbo].[QUOTATION_HISTORY]
            GROUP BY [QUOT_CODE]) DATA_MAX_qh on
            DATA_MAX_qh.DATA_MAX = qh.QUOT_DATA and  DATA_MAX_qh.QUOT_CODE = qh.QUOT_CODE
            inner join [dbo].[AN_QUOTAZIONE] q on q.QUOT_CODE = qh.QUOT_CODE 

最初に必要なことは、テーブルをグループ化して最大日付とそれに一致する値を取得し、このフィルター処理されたテーブルを使用してより完全な選択を行うことです

私はこれで始めました

  var qhmaxdatevalue = from qh in context.QUOTATION_HISTORY
                                 where qh.QUOT_DATA < System.DateTime.Now
                                 group qh by qh.QUOT_CODE into qhgroupedbycode
                                 select new { Quot_Code = qhgroupedbycode.Key, Data_Max = qhgroupedbycode.Max(x => x.QUOT_DATA) };

しかし、どうすれば続行できますか?ネストされたクエリを使用していますか?

手伝って頂けますか?

4

2 に答える 2

2
var query = 
context.QUOTATION_HISTORY
.GroupBy            
(
    x=>x.QUOT_CODE
)
.Select
(
    x=>
    new 
    {
        QUOT_CODE = x.Key,
        DATA_MAX = x.Max(z=>z.QUOT_DATA)
    }
)
.Join
(
    context.QUOTATION_HISTORY,
    x=>new{DATA_MAX,QUOT_CODE},
    x=>new{QUOT_DATA,QUOT_CODE},
    (DATA_MAX_qh,qh)=>new
    {
        DATA_MAX_qh.DATA_MAX,
        DATA_MAX_qh.QUOT_CODE,
        qh.QUOT_VALUE
    }
)
.Join
(
    context.AN_QUOTAZIONE,
    x=>QUOT_CODE,
    x=>QUOT_CODE,
    (qh,q)=>new
    {
        qh.DATA_MAX,
        qh.QUOT_CODE,
        qh.QUOT_VALUE,
        q.QUOT_DESCR,
        q.QUOT_DESCR_ALIAS
    }
);
于 2013-10-22T09:16:02.930 に答える