如何将嵌套集合中的元素添加到列表
本文关键字:添加 列表 string 元素 嵌套 集合 | 更新日期: 2023-09-27 18:02:17
我有JSON,写为:
{"Groups":[{
"UniqueId": "Group-1",
"Title": "",
"Subtitle": "",
"ImagePath": "",
"Description" : "",
"Items":
[
{
"UniqueId": "",
"Title": "",
"Subtitle": "",
"ImagePath": "",
"Description" : "",
"Content" : ""
}]}]}
我可以使用以下代码从Groups
添加Title
:
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)));
}
使用SelectMany
平整化列表:
titles.AddRange(_sampleDataSource.Groups.SelectMany(x => x.Items.Select(y => y.Title)));
你所做的,是创建一个内部有可枚举对象的可枚举对象(形象地说:列表的列表),所以结果类型是IEnumerable<IEnumerable<string>>
,这不是AddRange
所期望的(IEnumerable<string>
)。
SelectMany
接受一个"列表的列表",并创建一个包含所有这些列表元素的"列表"(更严格地说,它们是IEnumerable
的实例,而不是List<T>
,这听起来更容易)。