直接从 `await` 添加范围

AddRange from `await` directly

我目前正在从 await getWorlds() 返回一个列表列表 (List<List<string>>),现在我正在遍历每个列表,并获取每个列表中的第一个条目。

我只是想知道是否有另一种方法可以使用 .AddRange 或其他方式快速将它们全部直接添加到 Worlds 中?

这是我的代码:

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));