为了解释我的问题,我使用 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 函数,或者我应该使用 List
或 Dictionary
来跟踪我在遍历它们时找到的独特项目?哪个最快(算法复杂度最低)?
最佳答案
您可以使用 System.Linq
中的 SelectMany
。
bundles.SelectMany(b => new Book[] {b.Book1, b.Book2}).Distinct();
关于C# 将两个属性合并到一个列表中并过滤唯一值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41939580/