gpt4 book ai didi

c# - 如何创建 LINQ 查询以从对象字段内的数组生成唯一的对象列表?

转载 作者:行者123 更新时间:2023-12-05 03:16:16 25 4
gpt4 key购买 nike

我有一系列文件对象,这些文件对象有一个签名者对象数组作为一个字段。对于包对象,我需要在包中包含的每个文件中包含所有签名者对象的单个数组。

目前,我正在使用这段代码来获得相同的结果,但我认为这可以使用 LINQ 进行简化和改进。

foreach(var file in files) {    
holder.AddRange(file.signers);
}
holder.Select(x => x).Distinct();

最佳答案

您可以使用 SelectMany 从根本上将签名者扁平化到一个列表中。

也不需要执行 .Select(x => x) 它本质上是一个空操作。

holder
.AddRange(files.SelectMany(file => file.signers))
.Distinct();

哈希集版本

按照@Selvin 的建议使用 HashSet,因为 HashSet 不能包含重复条目,因此不需要任何等同于 Distinct()

// Earlier
HashSet<T> holder;

holder.UnionWith(files.SelectMany(file => file.signers));

关于c# - 如何创建 LINQ 查询以从对象字段内的数组生成唯一的对象列表?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/74732614/

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