2014-10-29 134 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属性?有没有办法嵌套“选择新的”语句?如果是这样,怎么样?

谢谢?

回答

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() 
       });