比较两个数组并从第二个数组中删除相同(相交)的值

时间:2019-01-18 02:46:30

标签: c# arrays compare intersection

       string[] one={"my", "5", "two", "array", "hey?", "good", "day"};
       string[] two={"hello!", "how", "good", "day", "us", "very", "two", "hard", "learn", "it"};

例如:我有上面的这些数组,我想比较它们,比较之后从string []两个中删除相同的值。因此,当我编译代码时,我的数组将是这样;

       string[] one={"my", "5", "two", "array", "hey?", "good", "day"};
       string[] two={"hello!", "how", "us", "very", "hard", "learn", "it"};

注意:对不起,我对此一无所知。

1 个答案:

答案 0 :(得分:1)

只需在Where语句中使用ContainsLinq,然后再使用ToArray

简单来说,

  1. 它通过检查数组two是否不包含两个元素来过滤数组one

  2. 将输出转换回数组

  3. 将其分配回您的变量two

示例

string[] one={"my", "5", "two", "array", "hey?", "good", "day"};
string[] two = { "hello!", "how", "good", "day", "us", "very", "two", "hard", "learn", "it" };

two = two.Where(x => !one.Contains(x)).ToArray();

Console.WriteLine(string.Join(",", two));

注意 ,这是区分大小写的

输出

hello!,how,us,very,hard,learn,it

或更有效的方法是使用Except,我完全忘记了(感谢评论)

two = two.Except(one).ToArray();

Enumerable.Except Method

  

产生两个序列的集合差异。

Enumerable.Where Method

  

根据谓词过滤一系列值。

Enumerable.Contains Method

  

确定序列是否包含指定的元素。

Enumerable.ToArray(IEnumerable) Method

  

从IEnumerable创建数组。