C# 比较两个数组并从第二个数组中删除相同的(相交)值
例如:我有上面这些数组,我想比较它们,比较后从字符串[]2中删除相同的值。因此,当我编译代码时,我的数组将是这样的C# 比较两个数组并从第二个数组中删除相同的(相交)值,c#,arrays,compare,intersection,C#,Arrays,Compare,Intersection,例如:我有上面这些数组,我想比较它们,比较后从字符串[]2中删除相同的值。因此,当我编译代码时,我的数组将是这样的 string[] one={"my", "5", "two", "array", "hey?", "good", "day"}; string[] two={"hello!", "how", "good", "day", "us", "very", "two", "hard", "learn", "it"}; 注意:对不起,我没有任何想法。只需在Lin
string[] one={"my", "5", "two", "array", "hey?", "good", "day"};
string[] two={"hello!", "how", "good", "day", "us", "very", "two", "hard", "learn", "it"};
注意:对不起,我没有任何想法。只需在
Linq
语句中使用Where
,包含
,然后ToArray
简言之
one
是否不包含两个元素来过滤数组two
two
string[] one={"my", "5", "two", "array", "hey?", "good", "day"};
string[] two={"hello!", "how", "us", "very", "hard", "learn", "it"};
注意,这是区分大小写的
输出
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));
或者更有效的方法是使用
,除了
,我完全忘记了这一点(感谢评论)
生成两个序列的集差 基于谓词筛选值序列 确定序列是否包含指定的元素 从IEnumerable创建数组
所以你只想修改数组
two
?是的,先生。我只想修改数组2。在这段代码之后,我可以像数组一样使用“2”吗?@heymycoder yesSeems like。Contains(x)
将导致二次时间复杂度。将一个
组合成一个集合将使其成为线性。@ggorlen是的,它将是二次的,或者更像的“次优”实现。除了
。。。你认为这是更好的方法,有什么特别的原因吗?
hello!,how,us,very,hard,learn,it
two = two.Except(one).ToArray();