C # Asp.Net MVC - Объединить списки выбора?

2

У меня есть два метода ниже. Один возвращает список производителей на основе идентификатора трубки, а другой возвращает список телефонов на основе идентификатора трубки (отношение через идентификатор трубки). Как я могу объединить их для возврата одного списка выбора с комбинированным значением телефонной трубки производителя? (Бит новый для MVC)

SelectList GetManufacturers()
{
        var manufacturers = ((DataPage<Manufacturer>)ViewData["Manufacturers"]).Records;
        return new SelectList(manufacturers, "ID", "Name", ViewData.Model.HandsetID != null ? ViewData.Model.HandsetID : -1);
}

SelectList GetHandsets()
{
    var list = ((DataPage<Handset>)ViewData["Handsets"]).Records;
    return new SelectList(list, "ID", "Name", ViewData.Model.HandsetID != null ? ViewData.Model.HandsetID : -1);
}

Помогите оценить,

С уважением

  • 0
    Похоже, вы делаете это в представлении (хотя я могу ошибаться, и вы используете viewdata для передачи данных между функциями). Если так, не надо.
Теги:
linq
asp.net-mvc

2 ответа

2
Лучший ответ

Следующий код должен работать. Он выполняет внутреннее соединение в ваших двух списках, а затем объединяет имена производителей и имена телефонов каждой записи с промежутком между ними.

var manufacturers = ((DataPage<Manufacturer>)ViewData["Manufacturers"]).Records;
var handsets = ((DataPage<Handset>)ViewData["Handsets"]).Records;

var list = 

     from manufacturer in manufacturers
     join handset in handsets on manufacturer.HandsetID equals handset.HandsetID
     select new 
     { 
         ID = handset.HandsetID,
         Name = manufacturer.Name + " " + handset.Name
     };
return new SelectList(list, "ID", "Name", ViewData.Model.HandsetID != null ? ViewData.Model.HandsetID : -1);
1

Если это из базы данных, вы должны объединить оба поля (Производитель и Телефон).

В linqtosql это выглядит следующим образом:

var result = (from foo in db.foos 
                 select new {
                             ID = foo.ID
                             Name = foo.Manufacturer + " " + foo.Handheld,
                            });

Затем вы можете использовать результат для заполнения списка избранных

Ещё вопросы

Сообщество Overcoder
Наверх
Меню