【发布时间】:2011-08-23 16:36:02
【问题描述】:
我有 2 个“产品”类型的 IEnumerables - totalProducts 和 ProductsChosen。顾名思义,totalProducts 保存所有可用的产品,ProductsChosen 保存用户选择的产品。
Product 类具有属性Id、number 和IEnumerable<AdditonalOptions> options。
我正在尝试像这样合并这两个 IEnumerables
public IEnumerable<Product> MergeProducts(IEnumerable<Product> Products, IEnumerable<Product> ProductsChosen)
{
return ProductsChosen.Concat(Products.Where(r => !ProductsChosen.Any(x => x.ProductId.Equals(r.ProductId))));
}
我已经使用代码从here合并
此代码仅在我考虑产品 ID 时才能正常工作,但如果产品 ID 相同,我还想将 productsChosen 的 IEnumerable<AdditionalOption> options 与 totalProducts 的代码合并。但我不确定如何这样做。
有人可以帮我吗?
谢谢
【问题讨论】:
-
改用
Union()方法 - 虽然 concat 是公认的答案,但正如您从投票中看到的那样,Union 是首选 -
改进标签列表以吸引更多浏览量
-
我认为这个问题需要澄清。我的解释是,您正在寻找
Products的两个集合的并集,并且在Products的交集上,您想要AdditionalOptions的并集。对吗?
标签: c# linq ienumerable linq-to-objects