C# 将两个属性合并到一个列表中并过滤唯一值

标签 c# algorithm linq data-structures

为了解释我的问题,我使用 BookBundle 创建了这个简化示例,其中包含两个 Book:

public class BookBundle
{
    public Book Book1 { get; }
    public Book Book2 { get; }
}

但现在我有很多 BookBundle,但我不知道我的图书馆中有哪些独特的 Book。为此,我创建了一个函数:

public static Book[] GetUniqueBooks(BookBundle[] bundles)
{
    // Return all unique books
}

实现这个功能最有效的方法是什么?是否有一些我可以使用的 Linq 函数,或者我应该使用 ListDictionary 来跟踪我在遍历它们时找到的独特项目?哪个最快(算法复杂度最低)?

最佳答案

您可以使用 System.Linq 中的 SelectMany

bundles.SelectMany(b => new Book[] {b.Book1, b.Book2}).Distinct();

关于C# 将两个属性合并到一个列表中并过滤唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939580/

相关文章:

c# - 如何从 .net 中的框架外的 Webbrowser 控件检索 HTML (c#)

c# - 打开 XML SDK 将 double 值写入 Excel 单元格

mysql - 从单个表获取 MAX、MIN、SUM、AVERAGE 并创建报告

python - Floyd Warshall 算法未按预期工作

algorithm - 匈牙利算法 : finding minimum number of lines to cover zeroes?

c# - 通过 id linq to xml C# 选择一个对象

c# - 检查项目是否不在键值对列表中

c# - 将 TableCell 文本转换为超链接

c# - Binary Reader 和 Writer 同时打开?

c++ - 生成汉明距离 t 内的所有比特序列