简体   繁体   English

LINQ中的嵌套匿名类型

[英]Nested Anonymous Type in LINQ

I am trying to build custom result set with LINQ. 我正在尝试使用LINQ构建自定义结果集。 Currently, I have the following: 目前,我有以下内容:

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

I want Teams to be a new custom type. 我希望团队成为一种新的自定义类型。 I want the type to have a field called IsChecked, TeamId, and TeamName. 我希望该类型有一个名为IsChecked,TeamId和TeamName的字段。 However, each Team currently only has TeamId and TeamName. 但是,每个团队目前只有TeamId和TeamName。 How do I get an IsChecked property added within this LINQ statement? 如何在此LINQ语句中添加IsChecked属性? Is there a way to nest "select new" statements? 有没有办法嵌套“选择新”语句? If so, how? 如果是这样,怎么样?

Thanks? 谢谢?

Sure, just add that as a projection: 当然,只需将其添加为投影:

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

or using query syntax 或使用查询语法

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

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM