我有以下的模型。我如何获得所有元素并分配它们?
Subscription Packages PackageWidgets Widgets
------------ -------- -------------- -------
ID ID < PackageID ID
PackageID > WidgetID >
我使用实体框架4和Subscription
有Package
的关系。而Package
具有的Widgets
列表的关系。
使用Linq,我试图获得全部Widgets
的列表,以及它们是否包含在当前订阅中。也许这是由于我的SQL背景,我只是没有看到Linq中的查询。 SQL将涉及从微一个SELECT,与左通过订阅,数据包和PackageWidgets基于在SubscriptionID传递一个子查询的JOIN。
我期望的输出将是类似于WidgetID,IsIncluded
,这样我将拥有所有的Widget 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