如何在一个列表中使用Lambda将成员列表的所有元素与另一个属性组合在一起?

时间:2013-10-21 04:03:55

标签: c# c#-4.0 lambda

我知道这可以使用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}

提前致谢!

1 个答案:

答案 0 :(得分: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();

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