1

我需要使用 linq(lambda) 在列表中返回一个列表,但是仍然没有获得所需的语法。

我有一个 WikiMeta 列表,我想查询它并将所有 WikiGroups 作为新列表返回。

注意:某些属性已被删除。

List<WikiMeta> Meta;

public class WikiMeta
{
    public List<WikiGroup> Groups = new List<WikiGroup>();
}

public class WikiGroup
{
    public string Name { get; set; }
}
4

1 回答 1

5

您可以使用以下命令将它们全部作为平面列表SelectMany

var groups = meta.SelectMany(m => m.Groups).ToList();

这会给你一个List<WikiGroup>.

的文档SelectMany

您可以在 main 上执行您希望的任何查询List<WikiMeta>,如下所示:

var filteredGroups = meta
    .Where(m => m.IsActive) // Fictional "IsActive" boolean property.
    .SelectMany(m => m.Groups)
    .ToList();

使用这种流畅风格的函数式方法来查询集合,您可以开始构建更复杂的查询。

如果您希望将查询推迟到迭代,请删除ToList,这将为您提供IEnumerable<WikiGroup>.

于 2013-10-24T09:38:44.507 回答