0

テーブルがあり、そのデータは次のようになります。

 id         name       date
 ---------  ---------  ----------
 1           a          2012-08-30 10:36:27.393
 1           b          2012-08-30 14:36:27.393
 2           c          2012-08-30 13:36:27.393
 2           d          2012-08-30 16:36:27.393

このクエリで最大日時を取得します。

select 
    t1.id
   ,t1.name
   ,t1.date 
from 
 table1 t1
 inner join (
     SELECT id,Max(date) as mymaxdate
     FROM table1
     group by id
 ) mt1
     on t1.id = mt1.id
     and t1.date = mt1.mymaxdate

結果:

1   b  2012-08-30 14:36:27.393
2   d  2012-08-30 16:36:27.393

このクエリをエンティティに書き込むにはどうすればよいですか?

ありがとう

4

1 に答える 1

0

トリッキーな部分は、最大日付を持つアイテムの名前も必要であることです。そうしないと、グループ化がはるかに簡単になります。しかし、SQL クエリをほぼ 1:1 に再現することで可能です。

from t in table1
join m in
    (from t in table1
    group t by t.id into g
    select new { g.Key, mymaxdate = g.Max (x => x.date) })
on new { t.id, t.date } equals new { id = m.Key, date = m.mymaxdate }
select t

複数のフィールドの結合は、プロパティ (および) の名前と型が一致する必要がある匿名型 (new {t.id, t.date}および) を作成することによって行われます。new {id = m.Key, date = m.mymaxdate}iddate

于 2012-08-31T09:31:16.497 に答える