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

C# 从第二个数组中获取元素,减去无效值,c#,C#,我有以下阵列: int[] masterProducts = [1, 2, 3, 4, 5, 6]; int[] selectedProducts = [1, 2, 3, 8]; 我想创建一个数组,该数组只包含selectedProducts,减去任何无效的产品(例如,从上面看,8是无效的产品,因为它不在主产品中) 所以我有两个问题: 找出selectedProducts有无效产品的最简单代码是什么?我可以做一些for/looping,但这似乎效率低下 在C语言中,最简单的方法是只取selec

我有以下阵列:

int[] masterProducts = [1, 2, 3, 4, 5, 6];
int[] selectedProducts = [1, 2, 3, 8];
我想创建一个数组,该数组只包含
selectedProducts
,减去任何无效的产品(例如,从上面看,
8
是无效的产品,因为它不在
主产品中

所以我有两个问题:

  • 找出
    selectedProducts
    有无效产品的最简单代码是什么?我可以做一些for/looping,但这似乎效率低下
  • 在C语言中,最简单的方法是只取
    selectedProducts
    ,减去任何无效的产品(在这种情况下减去数字
    8
  • 最简单的代码是什么,可以发现selectedProducts具有 无效产品?我可以做一些for/looping,但似乎 效率低下

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

    在C中,最简单的方法是什么,只取选定的产品,减去 任何无效产品(本例中减去数字8)

    这也是一个简单的方法-您可以使用运算符生成两个序列的集合交集:

    var validProducts = selectedProducts.Intersect(masterProducts);
    
    这也是一个set操作符,它还在内部使用hash set来快速查找第一个序列中的项是否存在于第二个sequence items-O(1)操作创建的hash集中

    找出selectedProducts具有 无效产品?我可以做一些for/looping,但似乎 效率低下

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

    在C中,最简单的方法是什么,只取选定的产品,减去 任何无效产品(本例中减去数字8)

    这也是一个简单的方法-您可以使用运算符生成两个序列的集合交集:

    var validProducts = selectedProducts.Intersect(masterProducts);
    

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

    @targetryen
    除了
    Any
    Intersect
    都是来自
    系统.Linq
    命名空间的扩展方法。所有这些方法都是任何可枚举数据类型的扩展-整数列表和数组都可以。使用在页面顶部确保有适当的
    file@Targaryen
    除了
    任何
    相交
    都是来自
    System.Linq
    命名空间的扩展方法。所有这些方法都是任何可枚举数据类型的扩展-整数列表和数组都可以。使用文件顶部的
    确保您有适当的