2012-01-19 4 views
2

두 개의 값 (MyCaption 및 MyValue)을 가져야하는 두 개의 목록이 있습니다.쿼리에서 Linq 부속 쿼리

List<UserInfoModel> userInfo = new List<UserInfoModel>(); 

List<myuser_field> myUserFields = GetMyUserFields(); 
var otherUserFields = otherUserService.GetOtherUserFields(); 

userInfo = (from otherUserField in otherUserFields 
       where otherUserField.Chosen == true 
        select new UserInfoModel { 
         MyCaption = otherUserField.FieldAlias, 
         MyValue = 
        }).ToList(); 

MyCaption 목록 중 하나에서 직접 받고 있습니다. 이제 MyValue를 얻으려면 otherUserField.FieldName을 기반으로 검색해야합니다. 즉 otherUserField.FieldName과 동일한 myUserFields.FieldName을 찾아서 MyValue에 할당해야합니다.

위와 같은 단일 쿼리로 수행 할 수 있습니까? 제발 제안하십시오

+0

당신은 두 컬렉션과 조인을 사용 할 수 있습니다 : HTTP : // weblogs.asp.net/rajbk/archive/2010/03/12/joins-in-linq-to-sql.aspx – H27studio

답변

3
userInfo = (from myUserField in myUserFields 
      join otherUserField in otherUserFields 
      on myUserField.FieldName == otherUserField.FieldName 
      where otherUserField.Chosen == true 
      select new UserInfoModel { 
       MyCaption = otherUserField.FieldAlias, 
       MyValue = myUserField.FieldName 
      }).ToList(); 
0

귀하의 질문에, 당신이 MyValue에 할당하려는 것은 분명하지 않습니다.

현재 열거 myuser_object의 필드 이름과 일치하는 필드 이름 (otherUserField.FieldName)이있는 myuser_field 객체 할당합니다 다음 :

List<UserInfoModel> userInfo = new List<UserInfoModel>(); 

List<myuser_field> myUserFields = GetMyUserFields(); 
var otherUserFields = otherUserService.GetOtherUserFields(); 

userInfo = (from otherUserField in otherUserFields 
       where otherUserField.Chosen == true 
        select new UserInfoModel { 
         MyCaption = otherUserField.FieldAlias, 
         MyValue = myUserFields.Single(uf => uf.FieldName == otherUserField.FieldName) 
        }).ToList(); 
+1

myUserFields에 하나 이상의 해당 객체가 없으면 예외가 발생합니다. SingleOrDefault를 단일 위치에 사용하면 MyValue에 null을 할당 할 수 있습니다. –