アプリ、ユーザー、グループの 3 つのエンティティがあります。それらはすべて多対多の関係にあります。彼らは次の属性を持っています
App: AppID, AppName
Group: GroupID, GroupName
User: UserID, UserName
特定のユーザーのアプリの一覧を取得したい。例: 'Thor' は 'The Avengers' グループに属しています。「アベンジャー グループ」は、「フライング」、「スーパー パワー」、「ライトニング ストライク」などのアプリにアクセスできます。
まず、'User' テーブルと 'Group' テーブルを結合して、'Thor' が属するグループ ('The Avenger' グループ) を取得します。次に、「グループ」テーブルと「アプリ」テーブルを結合して、グループ「The Avenger」がどのアプリにアクセスできるかを確認します。次に、ユーザー「Thor」のアプリのリストを取得します
私の現在のlinqクエリはすべてのアプリを返します(ユーザー「Thor」のアプリではありません)
これはlinqクエリです
AppListViewModel apps = new AppListViewModel {
Apps = from u in User
from g in u.Group
from a in g.App
where u.UserName=="Thor"
select new AppDTO {
AppID=a.AppID,
AppName=a.AppName,
},
};