0

私はこの3つのテーブルを持っています:

Process、Action、および Process_Actions (Many to Many 。プロセスが実行できるすべてのアクションを登録します。基本的に、このテーブルには Process_Id、Action_Id、および一意の ID (順序付け用) があります。

私が欲しいのは、すべてのプロセスのリストを取得し、最後のアクション(日付順)のみを取得するための LINQ クエリです。

これは私の作業中のSQLクエリです:

SELECT P.Id, P.Name, PA.Action_Id FROM Process P
    JOIN Process_Actions PA ON P.Id = PA.Process_Id 
    WHERE PA.Id IN (SELECT MAX (PA.Id) FROM Process_Actions INNER JOIN Process_Actions PA ON P.Id = PA.Process_Id)
4

2 に答える 2

1

これを試してください:

context.Processes.Select(p => new { Process = p,
    LastAction = p.Actions.OrderbyDescending(a => a.Date).FirstOrDefault() } )

Actionプロパティがあると仮定します( order by dateDateと言うように)。

于 2012-04-10T17:25:12.337 に答える
0

私はこのようなことを試してみます

var maxId = (from pa in context.Process_Actions 
join pa on pa.Id = pa.Process_Id)
select (int?)pa.Id).Max();

var query = from p in context.Process
join pa in context.Process_Actions on p.Id equals pa.Process_Id
where maxId.Contains(pa.Id)
select new
{
    p.Id, 
    p.Name, 
    pa.Action_Id
}
于 2012-04-10T16:19:28.630 に答える