C# 如何比较两个字符串数组并将匹配值存储在另一个字符串数组中?

C# 如何比较两个字符串数组并将匹配值存储在另一个字符串数组中?,c#,arrays,.net,string,linq,C#,Arrays,.net,String,Linq,我想比较这两个数组,删除所有数字(2,3,4,6)值,并将匹配字符串值存储在另一个数组中 我想要这样的结果: string[] a = { 2; a; 3; b; 4; c} string[] b = { 2; a; 6; c} 我尝试过这个,但它增加了所有的值 string[] c = {a; c;} 你需要的不是联合 string[] result = a.Union(b).ToArray(); 最简单的解决方案是使用Linq来完成这项工作 string[] result = a.I

我想比较这两个数组,删除所有数字(2,3,4,6)值,并将匹配字符串值存储在另一个数组中

我想要这样的结果:

string[] a = { 2; a; 3; b; 4; c}
string[] b = { 2; a; 6; c}
我尝试过这个,但它增加了所有的值

string[] c = {a; c;}

你需要的不是联合

string[] result = a.Union(b).ToArray();

最简单的解决方案是使用
Linq
来完成这项工作

string[] result  = a.Intersect(b).ToArray();
使用和
其中

int tmp;
var c = a.Where(x => b.Contains(x) && !int.TryParse(x, out tmp)).ToArray();
根据您的注释删除或替换冒号(;):


Union
不是这样工作的。使用
Intersect
No。它无法修复它,因为它有一个
位于数字的末尾。所以
!int.TryParse(2;,out tmp)
将计算为false,并将其作为结果返回。此列表的符号是无效的C结构。应该有
代替
string[] result = a.Intersect(b).Where(c => !char.IsDigit(c[0])).ToArray();
string[] result = a.Intersect(b).Where(c => !char.IsDigit(c[0]))
                                .Select(c => c.Replace(';',' ')).ToArray();