直接从 `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));
我目前正在从 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));