我有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)));
}
答案 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
,它听起来更简单。)