将3个不同但关联的表中的数据列在一个下拉列表中(使用linq to sql和mvc3)

将3个不同但关联的表中的数据列在一个下拉列表中(使用linq to sql和mvc3),sql,asp.net-mvc-3,linq-to-sql,drop-down-menu,Sql,Asp.net Mvc 3,Linq To Sql,Drop Down Menu,我的数据库中有3个表:item,group,groupdetail 在表item中有两个字段:id,item\u name(bigint“long”,string) 在表group中有两个字段:id,group\u name(bigint,string) 在表group\u details中有3个字段:id,group\u id,项目id(bigint,bigint,bigint) 组\u id可为空,因为某些项目没有组 我想做的是列出组的名称,其中有组“group\u name”的项目按ite

我的数据库中有3个表:
item
group
groupdetail

在表
item
中有两个字段:
id
item\u name
(bigint“long”,string)

在表
group
中有两个字段:
id
group\u name
(bigint,string)

在表
group\u details
中有3个字段:
id
group\u id
项目id
(bigint,bigint,bigint)

组\u id
可为空,因为某些项目没有组

我想做的是列出组的名称,其中有组“
group\u name
”的项目按
item\u id
排序,并且在同一个列表中,我想显示没有组的项目名称,这两个项目都应按
item\u id
排序

如果这个操作需要的话,我也可以用jquery填充下拉列表,但我的大脑被清单部分冻结了

控制器

 var data = from guru in dataContext.group_details select guru;

 var itemsWithoutGroup = data.Where(c => c.group_id == null).OrderBy(c => c.item_id).Where(c => c.item_id == c.item.id).Select( c=>c.item.item_name);

 var groups = data.Where(c => c.group_id != null).OrderBy(c => c.item_id).Where(c => c.group_id  == c.group.id).Select( c=>c.group.group_name);

 var grandlist = // i wanna do smt here to list both in one dropdown ordered by item_id
看法

编辑:

更具体地说

Group-1 
Group-2
Item-9
Group-3
Item-15
Group-4

这就是下拉列表的外观!没有分组的项目也应与项目组一起列出,并按项目id排序。

我将使用的语句是:

var groupswithItems = (from groupdetail in group_details select groupdetail.group_id
                     join group in groups groupdetail.group_id equals group.id
                     orderby groupdetail.item_id
                     select new SelectListItem {Text= group.name, Value= group.id.ToString() }).ToList()

var itemswithotgroups = (from item in items orderby item.id select new SelectListItem { Text= item.name, Value= item.id.ToString() }).ToList()

ViewBag.Combined = groupswithItems.union(itemswithotgroups);
这将为您提供组详细信息中所有组的列表(我认为这些组包含项目),并将其转换为Dropdownlist可以处理的对象

@Html.DropDownList("GroupDetails", ViewBag.groups as List<SelectListItem>))
@Html.DropDownList(“GroupDetails”,ViewBag.groups作为列表))

是的,它给出了有组的项目的组名,但我也想列出那些没有组的项目。基本上你想列出所有项目吗?不完全是,我想列出没有组的项目和有组的项目。真的很抱歉我的英语用法不好。我想最新的编辑应该是它。它是在没有任何编辑器的情况下创建的,因此可能存在一些语法错误。这将创建一个项目分组,该分组应包含项目,然后包含不包含项目的项目
@Html.DropDownList("GroupDetails", ViewBag.groups as List<SelectListItem>))