私は以下のモデルを持っています。すべての要素を取得する方法と割り当てられている場合
Subscription Packages PackageWidgets Widgets
------------ -------- -------------- -------
ID ID < PackageID ID
PackageID > WidgetID >
私は、Entity Frameworkの4を使用していますし、Subscription
はPackage
との関係を持っています。 Package
はWidgets
のリストとの関係を持っています。 LINQのを使用して
、私はすべてWidgets
のリストを取得しようとしていますし、彼らは現在のサブスクリプションに含まれている場合。おそらく、Linqでクエリが表示されていないという私のSQLバックグラウンドによるものです。 SQLには、WidgetsのSELECTが含まれ、渡されたSubscriptionIDに基づいてサブスクリプション、パッケージおよびPackageWidgetsのサブセレクトを介してLEFT JOINが行われます。
私が期待する出力はWidgetID,IsIncluded
のようになり、すべてのウィジェットIDと包含状態を示すブール値を持つようになります。
私がこれまで行ってきたことを示すために、遠く離れた何かを仕事に近づけることさえできないようです。
誰でも私のクエリを達成するためのいくつかの洞察を私に提供できますか?
更新: これは私が近づいてきたものですが、それでも動作しません。多分それは私も達成しようとしています何を説明するのに役立ちます:
from subscription in Subscriptions
where subscription.ID == 3
let subWidgets = subscription.Package.Widgets
from widget in Widgets
join subWidget in subWidgets on widget.ID equals subWidget.ID into joined
from list in joined.DefaultIfEmpty()
select new {
ID = widget.ID
,Selected = subWidget.ID != null
}
受け入れ答えを更新#2 おかげで、これは私が一緒に行くことになったものです - 私は必要なものを行いいる:
from widget in Widgets
from subWidgets in
from subscription in Subscriptions
where subscription.ID == 3
select subscription.Package.Widgets
orderby widget.ID
select new {
Name = widget.WidgetName,
Available = subWidgets.Contains(widget)
}
ありがとうございました!
これはうまくいくようですが、私は今日離れて帰ることはできませんそれまではこれまで。 ExecuteStoreQueryのヒントをありがとう! – BradBrening