-4

動作中の sql ステートメントがあり、それを linq ステートメントまたは linq メソッド チェーンとして使用したいと考えています。

私の声明は次のとおりです。

 SELECT T1.*
   FROM (SELECT Col1, MAX(InsertDate) as Data
         FROM Zugbewegungsdaten
         GROUP BY Loknummer) as temp JOIN T1
     ON (T1.Col1= temp.Col1
         AND Zugbewegungsdaten.InsertDate= temp.Date)
   WHERE Col3=1
ORDER BY Loknummer

翻訳を手伝ってくれる人はいますか?

コメント後に編集:

OK、内部選択の結果:

var maxResult = (from data in context.T1
                group data by data.Col1
                 into groups
               select new
                      {
                         Train = groups.Key,
                         InsertDate= groups.Max( arg => arg.InsertDate)
                       }) ;

私はこのように結合しようとしました:

 var joinedResult = from data in context.T1
                    join gdata in maxResult on new
                         {
                           data.Col1,
                           data.InsertDate
                         }
                         equals new
                         {
                           gdata.Col1,
                           gdata.InsertDate
                         }
                    select data;

しかし、型引数が無効であるという結合によってコンパイラエラーが発生します。

結合が機能する場合、joinedResult をフィルタリングする場所を使用する必要があります。

          var result = from data in joinedResult
                        where data.Col3 == true
                        select data;
4

1 に答える 1

0

さらに多くの「試行錯誤」を重ねた結果、このバージョンを入手しました。

var joinedResult = ( ( from data in context.T1
                             group data by data.Col1
                             into g
                             select new
                               {
                                 Key= g.Key,
                                 Date = g.Max( p => p.InsertDate)
                               } ) ).Join( context.T1,
                                           temp => new
                                             {
                                               Key = temp.Key,
                                               InsertDate = temp.Date
                                             },
                                           data => new
                                             {
                                              Key = data.Col1,
                                              InsertDate = data.InsertDate
                                             },
                                           ( temp,
                                             data ) => new
                                               {
                                                 temp,
                                                 data
                                               } )
                                    .Where( arg => arg.data.Col3)
                                    .OrderBy( arg => arg.data.Col1)
                                    .Select( arg => arg.data );

複数の列を結合して同じプロパティ名 (Key、InsertDate) を設定する必要があるのでしょうか?

于 2013-03-25T14:44:39.093 に答える