如何将嵌套集合中的元素添加到List <string>?

时间:2015-07-11 11:42:04

标签: c# json

我有JSON,写成:

{"Groups":[{
"UniqueId": "Group-1",
"Title": "",
"Subtitle": "",
"ImagePath": "",
"Description" : "",
"Items":
[
  {
    "UniqueId": "",
    "Title": "",
    "Subtitle": "",
    "ImagePath": "",
    "Description" : "",
    "Content" : ""
  }]}]}

我可以使用以下代码从Title添加Groups

List<string> titles = new List<string>();

if (this._groups.Count != 0)
{
    titles.AddRange(_sampleDataSource.Groups.Select(x => x.Title));
}

但我想从项目中添加Title,我无法这样做。我尝试了以下代码:

List<string> titles = new List<string>();

if (this._groups.Count != 0)
{
    titles.AddRange(_sampleDataSource.Groups.Select(x => x.Items.Select(y => y.Title)));
}

1 个答案:

答案 0 :(得分:2)

使用SelectMany展平列表:

titles.AddRange(_sampleDataSource.Groups.SelectMany(x => x.Items.Select(y => y.Title)));

你所拥有的是创建一个带有可枚举内容的枚举(比喻说:列表列表),因此生成的类型为IEnumerable<IEnumerable<string>>,这不是AddRange期待的内容({{1 }})。

IEnumerable<string>采用&#34;列表列表&#34;并创建一个&#34;列表&#34;包含所有这些列表中的元素(更严格地说它们是SelectMany的实例,而不是IEnumerable,它听起来更简单。)