Хорошо, вот что вы делаете, у вас есть строковые массивы, а не массивы 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]]
Как насчет размещения компилируемый код, показывающий, что не работает? – I4V
Обеспечьте минимальный рабочий тест (желательно тот, который можно запустить в LINQPad).«Нуль» и «одни» могут быть ложью - и «что-то» лежит (возможно, бездействия), потому что на показанном входе нет «44» или «52». – 2013-03-26 22:28:26
@pst: arr [0] = {4,8,10,11,12,14} arr [1] = {1,2,3,4,8,12,14} пересечение этих двух дает мне 1-й элемент, как 52 других, как 44 .. я не знаю, как ??? Нуль и одна переменная правильны..и отлаживают и проверяют – user2213564