c# - LINQ 中的嵌套匿名类型

标签 c# 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() 
               });

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

谢谢?

最佳答案

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

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

关于c# - LINQ 中的嵌套匿名类型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26636055/

相关文章:

c# - 如果列表字符串元素包含来自另一个列表的字符串元素,如何删除它?

c# - 如何在 C# 中创建 TreeView 首选项对话框类型的界面?

c# - 在 Quartz.Net 中调度依赖作业

c# - 在 Visual Studio 2008 中引用 dll 二进制文件或引用项目时有区别吗?

c# - XML声音的字节格式

c# - DevExpress MVC GridView BindToLINQ() 选择了太多数据

c# - using 命名空间指令只能应用于命名空间

c# - 将 VB Linq 转换为 C#

c# - 无法正确组合查询

c# - 使用 LINQ、C# 解析 XML 并将元素转换为类型化集合