我正在尝试展平这样的嵌套对象:
public class Book { public string Name { get; set; } public IList<Chapter> Chapters { get; set; } } public class Chapter { public string Name { get; set; } public IList<Page> Pages { get; set; } } public class Page { public string Name { get; set; } }
让我举一个例子。这是我的数据
Book: Pro Linq { Chapter 1: Hello Linq { Page 1, Page 2, Page 3 }, Chapter 2: C# Language enhancements { Page 4 }, }
我正在寻找的结果是以下平面列表:
"Pro Linq", "Hello Linq", "Page 1" "Pro Linq", "Hello Linq", "Page 2" "Pro Linq", "Hello Linq", "Page 3" "Pro Linq", "C# Language enhancements", "Page 4"
我该怎么做?我可以 选择 一个 new 来做到这一点,但有人告诉我SelectMany就足够了。
myBooks.SelectMany(b => b.Chapters .SelectMany(c => c.Pages .Select(p => b.Name + ", " + c.Name + ", " + p.Name)));