Как добавить результат двух таблиц данных в список ViewModel в c# - PullRequest
0 голосов
/ 22 апреля 2020

У меня есть результат двух таблиц данных, объединенных с использованием LINQ. Теперь я хочу, чтобы этот результат в моем списке ViewModel. Как мы можем сделать этот простой способ? Вот мой код.

 DataSet apprvDS = new DataSet();
         apprvDS = _documentApprovalBusiness.GetApproversByDocType(documentType, pATSUA.DBConnectionString);
        string userIDCSV = null;
        if (apprvDS.Tables.Count != 0)
        {
            if (apprvDS.Tables[0].Rows.Count != 0)
            {
                foreach (DataRow user in apprvDS.Tables[0].Rows)
                {
                    if (userIDCSV != null)
                        userIDCSV = string.Join(",", userIDCSV, user.Field<Guid>("UserID").ToString());
                    else
                        userIDCSV = user.Field<Guid>("UserID").ToString();
                }
            }
        }
        DataSet userDS = _userBusiness.GetUserBYIDs(userIDCSV);
        if (userDS.Tables.Count != 0)
        {
            if (userDS.Tables[0].Rows.Count != 0)
            {
                var result =
                    from apr in apprvDS.Tables[0].AsEnumerable()
                    join usr in userDS.Tables[0].AsEnumerable()
                    on apr.Field<Guid>("UserID")
                    equals usr.Field<Guid>("UserID")
                    select new 
                    {
                        ApproverID = apr.Field<Guid>("ApproverID"),
                        ApproverName = usr.Field<string>("UserName"),
                        UserID = apr.Field<Guid>("UserID"),
                        EmailID = usr.Field<string>("EmailID"),
                        ApproverLevel = apr.Field<int>("ApproverLevel")
                    };                                           

            }
        }

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

 selectListItem = result != null ? (from a in result
                                    select new SelectListItem
                                    {
                                      Text = result.ToList()[0].ApproverName.ToString(),
                                      Value = result.ToList()[0].ApproverID.ToString(),
                                      Selected = false
                                    }).ToList() : new List<SelectListItem>();

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

I пробовал таким образом, но не удалось



     documentApprovalVM.SendForApprovalList = new List<DocumentApprovalViewModel>();
                    while(apprvDS.Tables[0].Rows.Count>0)
                    {
                        documentApprovalVM = new DocumentApprovalViewModel();
                        {
                            documentApprovalVM.ApproverID = result.ToList()[0].ApproverID;
                            documentApprovalVM.UserName = result.ToList()[0].ApproverName;
                            documentApprovalVM.UserID = result.ToList()[0].UserID;
                            documentApprovalVM.EmailID = result.ToList()[0].EmailID;
                            documentApprovalVM.ApproverLevel = result.ToList()[0].ApproverLevel;
                        }
                        documentApprovalVM.SendForApprovalList.Add(documentApprovalVM);
                    }

1 Ответ

0 голосов
/ 22 апреля 2020

Эта часть выполняет работу

 if (userDS.Tables.Count != 0)
        {
            if (userDS.Tables[0].Rows.Count != 0)
            {

               documentApprovalVM.SendForApprovalList =
                    (from apr in apprvDS.Tables[0].AsEnumerable()
                    join usr in userDS.Tables[0].AsEnumerable()
                    on apr.Field<Guid>("UserID")
                    equals usr.Field<Guid>("UserID")
                    select new DocumentApprovalViewModel
                    {
                        ApproverID = apr.Field<Guid>("ApproverID"),
                        Approver = usr.Field<string>("UserName"),
                        UserID = apr.Field<Guid>("UserID"),
                        EmailID = usr.Field<string>("EmailID"),
                        ApproverLevel = apr.Field<Int16>("ApproverLevel")
                    }).ToList();

            }
        }

этот код назначит результат в список в ViewModel

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...