Вывод данных из 3 разных, но связанных таблиц в один выпадающий список (с использованием linq-to-sql и mvc3) - PullRequest
0 голосов
/ 23 сентября 2011

В моей базе данных 3 таблицы: item, group, groupdetail;

в таблице item есть 2 поля: id, item_name (bigint "long", string)

в таблице group есть 2 поля: id, group_name (bigint, string)

в таблице group_details есть 3 поля: id, group_id, item_id (bigint, bigint, bigint)

group_id допускает обнуление, потому что некоторые элементы не имеют групп.

что я хочу сделать, это перечислить имена групп, в которых элементы с группой "group_name" упорядочены по item_id, а также в том же списке я хочу показать имена элементов, у которых нет группы, и оба их следует заказывать по item_id

Я также могу заполнить выпадающие списки с помощью jquery, если это необходимо для этого действия, но я замираю с листингом.

Контроллер * * 1 032

 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

вид

@Html.DropDownList("GroupDetails", new SelectList((System.Collections.IEnumerable)ViewData["GroupDetailedList"], "id", "item_id"))

РЕДАКТИРОВАТЬ:

Чтобы быть более конкретным об этом ..

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

Так вот как должен выглядеть выпадающий список! Товары без групп должны быть перечислены вместе с группами товаров и упорядочены по item_id ..

1 Ответ

1 голос
/ 23 сентября 2011

Оператор, который я бы использовал:

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);

Это даст вам список из всех групп, которые находятся в деталях группы (которые содержат элементы, которые я предполагаю) и преобразует его в объект, который может обрабатывать Dropdownlist1004 *

@Html.DropDownList("GroupDetails", ViewBag.groups as List<SelectListItem>))
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...