2014-10-29 2 views
3

LINQ를 사용하여 사용자 지정 결과 집합을 작성하려고합니다. 현재 다음과 같은 정보가 있습니다.LINQ의 중첩 된 익명 형식

List<Team> teams = Team.FindAll(); 
List<Player> players = Player.FindAll(); 

var results = (from player in players 
       select new 
       { 
       PlayerId = player.Id, 
       PlayerName = player.Name, 
       Teams = teams.Where(t => player.TeamsIds.Contains(t.TeamId)).ToList() 
       }); 

팀이 새로운 맞춤 유형이되기를 원합니다. 형식에 IsChecked, TeamId 및 TeamName이라는 필드가 있어야합니다. 그러나 각 팀에는 현재 TeamId 및 TeamName 만 있습니다. 이 LINQ 문에 IsChecked 속성을 어떻게 추가합니까? "select new"문을 중첩 할 수있는 방법이 있습니까? 그렇다면 어떻게?

고마워요?

답변

8

물론, 단지 투사로 그 추가 :

var results = (from player in players 
       select new 
       { 
       PlayerId = player.Id, 
       PlayerName = player.Name, 
       Teams = teams.Where(t => player.TeamsIds.Contains(t.TeamId)) 
           .Select(t => new { 
                t.TeamId, 
                t.TeamName, 
                IsChecked = ??? 
               } 
           .ToList() 
       }); 

또는 사용하여 쿼리 구문

var results = (from player in players 
       select new 
       { 
       PlayerId = player.Id, 
       PlayerName = player.Name, 
       Teams = (from t in teams 
          where player.TeamsIds.Contains(t.TeamId) 
          select new { 
             t.TeamId, 
             t.TeamName, 
             IsChecked = ??? 
            } 
         ).ToList() 
       });