gpt4 book ai didi

c# - 使用 lambda 将带有列表的元素列表转换为单个列表

转载 作者:行者123 更新时间:2023-11-30 19:15:36 24 4
gpt4 key购买 nike

我有家庭名单,每个家庭都有一份居民名单。我想要一个函数来返回所有家庭的所有居民的列表。

我目前拥有的:

public List<Resident> Residents() {
var list = new List<Resident>();
Households.ForEach(x => list.AddRange(x.Residents));
return list;
}

是否可以使用 lambda 来缩短它?像这样:

public List<Resident> Residents => { ??? }

我知道如果 Households 是我可以使用 SelectMany 的列表列表,但它不是。

编辑1:

要明确一点,Household 是一个类,而不是一个容器。

编辑 2:

我尝试了以下方法

public List<Resident> Residents => Households.SelectMany(h => h.Residents);

但是这给了我错误:

error CS1061: 'List< Household>' does not contain a definition for 'SelectMany' and no extension method 'SelectMany' accepting a first argument of type 'List< Household>' could be found (are you missing a using directive or an assembly reference?)

编辑 3:

对不起,我以为我说清楚了。 Household 是一个包含居民列表的类,如下所示:

class Household {
public List<Resident> Residents { get; }
}

最佳答案

您可以在 C# 6.0 中执行此操作:

public List<Resident> Residents => Households.SelectMany(x => x.Residents).ToList(); 

你需要确保你有一个 using System.Linq;在代码顶部获取 IEnumerable<T>扩展方法 - 其中包括 SelectMany .

关于c# - 使用 lambda 将带有列表的元素列表转换为单个列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36033050/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com