2013-06-07 5 views
2

제목이 문제를 잘 설명하는지 잘 모르겠으니 여기에 코드가 있습니다. 익명의 객체를 반환하여 그리드를 바인딩하고 싶습니다. 그 표에서 사용자 이름을 전체 이름으로 변경하려고하지만 사용자 이름과 일치하는 전체 이름이있는 경우에만 사용합니다. 아래 쿼리에서 CreatedUsername이 userModels에있는 경우 CreatedFullname IF를 얻습니다. 그것이 존재하지 않는다면 나는 기록을 전혀 얻지 못합니다. 필자가 레코드를 가져 오려면, UserModels에서 사용할 수있는 경우 UserFullname을 표시하고, 그렇지 않으면 x.CreatedUsername을 반환하고 싶습니다.표현식이 일치하지 않는 경우 LINQ return expression

var inf = (from ev in db.Events 
     where (ev.StartDate >= beginDate && ev.StartDate <= endDate) 
     orderby ev.StartDate descending 
     select new 
     { 
      EventID = ev.EventID, 
      EventTitle = ev.Title, 
      EventDate = ev.StartDate, 
      StudentCount = ev.EventStudents.Count(), 
      CreatedUsername = ev.CreatedUsername 
      }).AsEnumerable().Select(x => new {EventID = x.EventID, 
            EventTitle = x.EventTitle, 
            EventDate = x.EventDate, 
            StudentCount = x.StudentCount, 
            CreatedUsername = x.CreatedUsername, 
            CreatedFullname = 
             userModels.Where(u => u.Username == x.CreatedUsername).FirstOrDefault().UserFullName 
      }); 

userModels 그것이 BEGINDATE와 endDate가에 기초 pageload에 액티브 디렉토리로부터 수집 된 사용자 이름 UserFullname, 백화점 등을 갖는 사용자 객체이다.

답변

1

이 작업을 수행 할 수 있습니다

CreatedFullname = 
    userModels.Where(u => u.Username == x.CreatedUsername) 
       .Select(x => x.UserFullName) 
       .FirstOrDefault() ?? x.CreatedUsername 

또는이 :

var inf = 
    (from x in 
     (from ev in db.Events 
     where (ev.StartDate >= beginDate && ev.StartDate <= endDate) 
     orderby ev.StartDate descending 
     select new 
     { 
      EventID = ev.EventID, 
      EventTitle = ev.Title, 
      EventDate = ev.StartDate, 
      StudentCount = ev.EventStudents.Count(), 
      CreatedUsername = ev.CreatedUsername 
     }) 
     .AsEnumerable() 
    let model = userModels.FirstOrDefault(u => u.Username == x.CreatedUsername) 
    select new 
    { 
     EventID = x.EventID, 
     EventTitle = x.EventTitle, 
     EventDate = x.EventDate, 
     StudentCount = x.StudentCount, 
     CreatedUsername = x.CreatedUsername, 
     CreatedFullname = (model != null) 
      ? x.modelUserFullName 
      : x.CreatedUsername 
    }); 
+0

다시, 감사합니다! – Jazzy