1

我知道这可以使用 for 循环和模型类来解决,但我很好奇你将如何只使用带有结果匿名对象的 lambda 表达式来做到这一点。

说我有课

public class GameReport
{
    public GameReport()
    {
        Entries = new List<ReportEntry>();
    }

    public string GameName { get; set; }
    public List<ReportEntry> Entries { get; set; }
}

并使用这个类我实例化了一个对象

List<GameReport> gameReports = new List<GameReport>();

然后我用必要的值(包括条目列表)填充这个列表,现在我需要使用 Lambda 表达式来创建一个由匿名对象组成的新列表,其中包含类似

new { GameName, SingleEntry}

提前致谢!

4

1 回答 1

2
var items = (from g in gameReports
             from e in g.Entries
             select new { g.GameName, Entry = e }).ToList();

或者使用SelectMany基于方法的查询的方法:

var items = gameReports.SelectMany(g => g.Entries
                                        .Select(e => new
                                                     { 
                                                         g.GameName,
                                                         Entry = e
                                                     })).ToList();

第一个将由编译器在编译时转换为第二个。

于 2013-10-21T04:06:30.137 回答