私は3つのテーブルを持っています
- プロジェクト テーブル
- 製品表
- 更新テーブル
製品テーブルにはプロジェクトのさまざまな製品が保持され、更新テーブルにはさまざまな製品に対して行われた更新が保持され、更新を行ったユーザーへの参照が保持されます。
基本的に私が欲しいのは、現在ログインしているユーザーによって最後に更新された日付で並べ替えられたすべての製品を返すクエリを持つことです (プロジェクトへの製品は多対 1 の関係であるため)。
これは私の現在のクエリです:
IEnumerable<ProjectProduct> list =
from joined in
(from product in db.GetTable<Product>()
join project in db.GetTable<Project>()
on product.ProjectId equals project.ID
select new { product, project })
join projectupd in db.GetTable<ProjectUpdate>()
on joined.product.ID equals projectupd.ProductID
where projectupd.CreatedBy == ParamUser
orderby projectupd.LastUpdate
select new ProjectProduct(joined.project, joined.product);
ただし、得られる結果は更新テーブルのエントリのみであり、既存のすべての製品ではありません。「where」句により、特定のユーザーによって作成された更新のみが選択されることがわかっているので、正しい軌道に乗っていますが、クエリを成功させるためにいくつかのことを試しましたが、運が悪い.
望ましい結果を得る方法について誰か提案がありますか?