У меня есть результат двух таблиц данных, объединенных с использованием 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);
}