将3个不同但关联的表中的数据列在一个下拉列表中(使用linq to sql和mvc3)
我的数据库中有3个表:将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
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>))