从第二个数组中取元素,减去无效值

时间:2017-06-12 21:11:12

标签: c#

我有以下数组:

int[] masterProducts = [1, 2, 3, 4, 5, 6];
int[] selectedProducts = [1, 2, 3, 8];

我想创建一个只有selectedProducts的数组,减去任何无效的产品(例如,来自上面,8是无效的产品,因为它不在masterProducts中)。

所以我有两个问题:

  1. 找出selectedProducts产品无效的最简单代码是什么?我可以做一些/循环,但这似乎效率低下。
  2. C#中最简单的方法是仅采用selectedProducts,减去任何无效产品(在这种情况下减去数字8)?

1 个答案:

答案 0 :(得分:4)

  

找出selectedProducts有一个最简单的代码是什么?   产品无效?我可以做一些/循环,但似乎   低效的。

使用LINQ Except方法很容易,它产生两个序列的集合差异。请注意,性能也会非常好,因为它是一个集合操作(​​在内部使用哈希集):

bool hasInvalidProduct = selectedProducts.Except(masterProducts).Any();
  

C#中最简单的方法是只选择selectedProducts,减号   任何无效产品(在这种情况下减去数字8)?

它也很简单 - 您可以使用Intersect运算符生成两个序列的集合交集:

var validProducts = selectedProducts.Intersect(masterProducts);

这也是一个集合运算符,它还在内部使用散列集来快速查找第一个序列中的项是否存在于从第二个序列项创建的散列集中 - O(1)操作。