-1

合計またはその他の集計関数の出力を取得するグループ化の例を見てきましたが、グループ化された基準に一致する「レコード」を取得しようとして行き詰まっています。集計値は必要ありません。私の状況を説明しましょう:

私はLINQ to EFを使用しています.Entity_Id、Entity_Revision_Number、および他の多くの列を持つテーブルEntity_Revisionsがあります。Entity_Revision_Number は、エンティティのバージョンのようなものです。そのため、LINQ クエリで最新バージョンを取得したいと考えています。以下はデータの種類です。

 Entity_Id Entity_Revision_Number
 1         0
 1         1
 2         0
 3         0
 3         1

レコード 1,1 2,0 および 3,1 を返すクエリが必要です。私が必要とするクエリは、

from e in ENTITY_REVISIONs
<some joins>
<some where>
group e by e.ENTITY_ID into g
select g <where max(g.entity_revision_number)>

また、ENTITY_REVISIONs タイプを new{} 匿名タイプの形式ではなく、出力として取得することは可能ですか?

4

2 に答える 2

3

IDでグループ化し、各グループをリビジョン番号の降順で並べ替え、各グループの最初の値を取得すると問題ありません。

var query = from e in ENTITY_REVISIONs
            group e by e.ENTITY_ID into grp
            select grp.OrderByDescending(x => x.entity_revision_number).First();
于 2013-01-26T20:44:58.770 に答える
0

私はあなたがこれを探していると思います:

var query = 
 from e in ENTITY_REVISIONs
 group e by e.ENTITY_ID into g
 select new {
   Entity_Id = g.Key,
   Entity_Revision_number = (from e in ENTITY_REVISIONs
                             where e.ENTITY_ID == g.Key
                             select e.entity_revision_number).Max()
 };
于 2013-01-25T18:09:54.217 に答える