好的,这就是您正在做的事情,您有字符串数组而不是 int 数组。如果你这样做
arr[0]="4,8,10,11,12,14";
arr[1]="1,2,3,4,8,12,14";
var intersection = arr[0].Intersect(arr[1]);
因为arr[0]
和arr[1]
是字符串,所以你会得到这个字符列表,'4', ',' , '8', '1', '2'
它分别对应于52 44 56 49 50
你得到的整数值。
您应该声明整数矩阵而不是字符串数组,int [,] arr = new int[100,100];
甚至更好List<List<int>>
。您不能使用像字符串这样的整数,至少在这种情况下不能。
List<List<int>> arr = new List<List<int>>();
arr.Add(new List<int>{4,8,10,11,12,14});
arr.Add(new List<int>{1,2,3,4,8,12,14});
var intersection = arr[0].Intersect(arr[1]);
但是,如果您不相信我,并且想确定您之前的代码没有意义,请更改foreach
循环并查看发生了什么:
foreach (char value1 in intersect)
{
//perform logic
}
此外,您不需要这样做:
int zero= Convert.ToInt32(com[0].ToString());
int one= Convert.ToInt32(com[1].ToString());
您可以将其替换为以下内容:
int zero= com[0];
int one = com[1];
但尽管如此,这毫无意义,因为您可以这样做:
arr[com[0]]
arr[com[1]]