通过 IEnumerable 进行迭代以填充 List MVC C#
本文关键字:填充 List DTO MVC IEnumerable String 通过 迭代 | 更新日期: 2023-09-27 18:31:45
任何人都可以帮助解决我遇到的问题,我正在尝试编写一个将返回我的 DTO 对象列表的方法
我正在通过usrCode获取用户,并在数据库中获取其工作代码的列表。 然后,我从WCF获得所有作业的列表。然后我想创建一个新列表,其中 jobDescription 附加了 DTO,因为数据库只有用户代码和工作代码。 我想要的是来自我的 WCF 的 JobDescription 列表,但来自用户没有的作业列表。通过这个....
List<UserJobsDTO> list = listBuilder(jobs, yetToHave);
目前我只有这个,我已经设法获得了用户没有的工作代码列表,但我需要工作描述...... 谁能帮我完成我的方法?
public ActionResult addJob(string usrCode)
{
var jobs = jobsClient.GetAlljobs();
var alljobsCode = (from s in jobs select s.jobsCode).ToList();
var thisUserJobCode = (from s in db.UserJobs
where s.usrCode == usrCode
select s.jobsCode).ToList();
var yetToHave = alljobsCode.Except(thisUserJobCode);
List<UserJobsDTO> list = listBuilder(jobs, yetToHave);
ViewBag.jobsCode = new SelectList(list, "jobsCode", "jobDescription");
var model = new UserJob { usrCode = usrCode };
return View("addJob", model);
}
private List<UserJobsDTO> listBuilder(jobsService.jobsDTO[] jobs, IEnumerable<string> yetToHave)
{
foreach (string s in yetToHave)
{
for every yetToHave job
attach description to UserJobsDTO.Description
}
}
DTO:
public class UserJobsDTO
{
public String userCode { get; set; }
public String jobsCode { get; set; }
public String jobDescription { get; set; }
}
您可以将
LINQ Contains
方法与 !
一起使用(这意味着不包含)
假设jobsClient.GetAlljobs()
返回UserJobsDTO
DTO 的集合。
//Get all Jobs
var allJobs = jobsClient.GetAlljobs().ToList();
//Get a list of Job code this user
var thisUsersJobCodeList = (from s in db.UserJobs where s.usrCode == usrCode
select s.jobsCode).ToList();
//Get items from all jobs except the items in thisUsersJobCodeList
var yetToHave = allJobs.Where(s => !thisUsersJobCodeList .Contains(s.jobsCode)).ToList();
//Convert to a List<SelectListItem> for dropdown
var dropDownData = yetToHave.Select(s => new SelectListItem
{ Value = s.jobsCode, Text = s.jobDescription}).ToList();
ViewBag.jobsCode = dropDownData;