0

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

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

这是我的代码:

var worlds = await getWorlds();
foreach (var w in worlds)
{
    Worlds.Add(w[0]);
}

有什么办法可以将其缩短为更小的东西?喜欢Worlds = worlds.AddRange([0]);还是什么?我只想获取第一个条目[0]并将每个条目添加到Worlds. 我只是想看看是否有一种更简洁的方式来编写我的代码。我还没有找到任何例子。

4

2 回答 2

3

你可以这样做:

var worlds = await getWorlds();
Worlds.AddRange(worlds.Select(w => w[0]));

虽然我不明白为什么foreach这么糟糕。

于 2018-09-04T13:27:34.427 回答
2

这不是您要查找的内容,但是您可以这样做以添加所有子列表中的所有项目实例,而不仅仅是第一个..(这会将列表展平为单个项目列表)

var worlds = await getWorlds();
Worlds.AddRange(worlds.SelectMany(w=>w));
于 2018-09-04T13:38:09.680 回答