我需要使用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; }
}
答案 0 :(得分:5)
您可以使用SelectMany
var groups = meta.SelectMany(m => m.Groups).ToList();
这会给你一个List<WikiGroup>
。
您可以在主List<WikiMeta>
上执行您希望的任何查询:
var filteredGroups = meta
.Where(m => m.IsActive) // Fictional "IsActive" boolean property.
.SelectMany(m => m.Groups)
.ToList();
使用这种流畅的功能方法来查询集合,您可以开始构建更复杂的查询。
如果您希望将查询延迟到迭代,请删除ToList
,这将为您提供IEnumerable<WikiGroup>
。