【问题标题】:Nested Anonymous Type in LINQLINQ 中的嵌套匿名类型
【发布时间】:2014-10-29 16:43:01
【问题描述】:

我正在尝试使用 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() 
               });

我希望 Teams 成为一种新的自定义类型。我希望该类型有一个名为 IsChecked、TeamId 和 TeamName 的字段。但是,每个 Team 目前只有 TeamId 和 TeamName。如何在此 LINQ 语句中添加 IsChecked 属性?有没有办法嵌套“选择新”语句?如果有,怎么做?

谢谢?

【问题讨论】:

    标签: c# linq


    【解决方案1】:

    当然,只需将其添加为投影:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-02-01
      • 2011-11-07
      相关资源
      最近更新 更多