У меня есть два метода ниже. Один возвращает список производителей на основе идентификатора трубки, а другой возвращает список телефонов на основе идентификатора трубки (отношение через идентификатор трубки). Как я могу объединить их для возврата одного списка выбора с комбинированным значением телефонной трубки производителя? (Бит новый для 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);
}
Помогите оценить,
С уважением
Следующий код должен работать. Он выполняет внутреннее соединение в ваших двух списках, а затем объединяет имена производителей и имена телефонов каждой записи с промежутком между ними.
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);
Если это из базы данных, вы должны объединить оба поля (Производитель и Телефон).
В linqtosql это выглядит следующим образом:
var result = (from foo in db.foos
select new {
ID = foo.ID
Name = foo.Manufacturer + " " + foo.Handheld,
});
Затем вы можете использовать результат для заполнения списка избранных