2016-01-23 3 views
0

Может кто-нибудь помочь с проблемой у меня есть, им пытаются написать метод, который будет возвращать список моих DTO объектыIterate Хотя IEnumerable <String> для заполнения списка <DTO> MVC C#

Я получаю пользователя по usrCode и и получение списка их кодов задания в БД. Затем я получаю список всех заданий из WCF. Затем я хочу создать новый список с параметром jobDescription, связанным с DTO, поскольку у DB есть только userCode и jobCode. То, что я хочу, это список JobDescription из моего WCF, но из списка Job, который имеет пользователь DOESNT. через это ....

List<UserJobsDTO> list = listBuilder(jobs, yetToHave); 

В настоящее время я только это, я сумел получить список jobCodes пользователя оленьей кожи есть, но мне нужно jobDescriptions ... Может кто-нибудь помочь мне завершить мой метод?

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; } 
} 
+0

где есть работаОписание? Как подключиться к jobCode? Покажите нам пример ответа от службы WCF – Shyju

+0

Они находятся в UserJobsDTO. 'public class UserJobsDTO { public String userCode {get; задавать; } public String jobsCode {get; задавать; } public String jobDescription {get; задавать; } } ' –

+0

Что-то вроде' foreach (string s in yetToHave) {s.Description = jobss.Where (j => j.jobCode == s.jobCode) .Single(). ToString(); } 'может сделать трюк. Это предполагает, что 'jobCode' уникален. – Tim

ответ

2

Вы можете использовать метод 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; 
+0

Что будет передано в виде ??. Это решение также вызывает эту ошибку. Ошибка Невозможно присвоить группе методов неявно типизированную локальную переменную. Для переменной allJobs –

+0

Ваш существующий код, я думаю. У ViewBag.jobs есть нужный товар – Shyju

+0

В какой строке вы получаете сообщение об ошибке? – Shyju

 Смежные вопросы

  • Нет связанных вопросов^_^