我目前正在从List<List<string>>
返回一个列表(await getWorlds()
),现在我正在循环遍历每个列表,并获得每个列表中的第一个条目。
我只是想知道是否有另一种方法我可以用Worlds
或其他东西快速将所有这些直接添加到.AddRange
中?
这是我的代码:
var worlds = await getWorlds();
foreach (var w in worlds)
{
Worlds.Add(w[0]);
}
有什么方法可以将它缩短到更小的范围吗?像Worlds = worlds.AddRange([0]);
或其他什么?我只想获得第一个条目[0]
并将每个条目添加到Worlds
。我只是想看看是否有更清晰的编写代码的方法。我没有找到任何例子。
你可以这样做:
var worlds = await getWorlds();
Worlds.AddRange(worlds.Select(w => w[0]));
虽然我不明白为什么foreach
如此糟糕。
这不是你想要的,但是你可以这样做来添加所有子列表中的所有项目实例,而不仅仅是第一个...(这会将列表展平为单个项目列表)
var worlds = await getWorlds();
Worlds.AddRange(worlds.SelectMany(w=>w));