Как добавить элемент на основе идентификатора в список и привязать к выпадающему списку в Asp.net MVC

#c# #asp.net-mvc #linq #list

#c# #asp.net-mvc #linq #Список

Вопрос:

У меня есть метод, который получает имя и идентификатор проекта на основе идентификатора клиента с помощью Linq

     public SelectList GetClientProjects(int clientId){

     IEnumerable<SelectListItem> clientProjectsList = 
        (from client in res.CLIENT
         join clientProj in res.CLIENT_PROJECT
         on client.ID equals clientProj.CLIENT_ID
         join project in res.PROJECT
         on clientProj.PROJ_ID equals project.ID
         where client.IS_DELETED == "N" amp;amp; clientProj.IS_DELETED
                   == "N" amp;amp; project.IS_DELETED 
                   == "N" amp;amp; client.ID == clientId
         select project).AsEnumerable().Select(projs => new SelectListItem() {
                                  Text=projs.NAME, Value=projs.ID.ToString() });
        return new SelectList(clientProjectsList, "Value", "Text", PROJ_ID);
    }
 

Теперь я получаю идентификатор клиента, выполнив следующий запрос

 var clientDetails = reslandentity.CLIENT.
Where(m => m.SUBSCRIBER_ID == userid).ToList();
 

Таким образом, как можно получить имя проекта и идентификатор проекта и как привязаться к выпадающему списку с помощью ProjectID и заполнить имена проектов.

Ответ №1:

  var clientDetails = reslandentity.CLIENT.Where(m => m.SUBSCRIBER_ID == userid);
 List<SelectListItem> items = new List<SelectListItem>();
 foreach (var item in clientDetails)
 {
    var clientProjectsList =
          (from client in reslandentity.CLIENT
           join clientProj in reslandentity.CLIENT_PROJECT
           on client.ID equals clientProj.CLIENT_ID
           join project in reslandentity.PROJECT
           on clientProj.PROJ_ID equals project.ID
           where client.IS_DELETED == "N" amp;amp; clientProj.IS_DELETED
                     == "N" amp;amp; project.IS_DELETED
                     == "N" amp;amp; client.ID == item.ID
           select project).FirstOrDefault();
            if (clientProjectsList != null)
            {
                items.Add(new SelectListItem() { Text = clientProjectsList.NAME, Value = clientProjectsList.ID.ToString() });
            }
 }
 SelectList list=new SelectList(items,"Value","Text",model.PROJ_ID);
 ViewBag.ProjectsList = list;
 

Привязать к выпадающему списку, например

 @Html.Dropdownlistfor(m=>m.Proj_Id,(SelectList)ViewBag.ProjectsList) 
 

Надеюсь, вы получили ожидаемый результат.