2014-11-14 2 views
-3

У меня есть некоторые подстановки типа IList, каждый из которых имеет 6 элементов, например. 1, 1, 3, 2, 2, 2C# Объединить много IList <char>, чтобы создать новый список

Так что в моей коллекции подстановок я могу иметь 2 списка выглядит как 1, 1, 3, 2, 2, 2 & другой, как 1, 1, 2, 3 , 2, 2

мне нужно объединить их, чтобы получить в результате комбинаци 1, 1, 2/3, 2/3, 2, 2.

Но сочетающие потребности, которые должны применяться для всех перестановок в список. Предлагаемый ниже код предлагает работу, однако объединение должно уменьшать элементы в коллекции, но после объединения их Im осталось с одинаковым количеством перестановок в сочетании?

foreach (IList<char> p in permutationCollection) 
    { 
     var result = p.Zip(permutationCollection.ElementAt(x + 1), (first, second) => { if (first != second) { return first + "/" + second; } else return second.ToString(); }); 
    } 
+2

Добро пожаловать на SO. Вам нужно показать, что вы пробовали, прежде чем пытаться заставить людей помочь, иначе можно понять, что вы просто приходите сюда, чтобы заставить людей написать код для вас. – sr28

+0

У вас есть только 2 списка или несколько? –

+1

Я не понимаю результат вашего примера. Можете ли вы точно объяснить, как вы комбинируете значения {1, 1, 3, 2, 2, 2} с {1, 1, 2, 3, 2, 2}, чтобы получить {1, 1, 2/3, 2/3, 2, 2}. И составляет 2/3 означает две трети (0,66) или 2 и 3? Если последнее, как это представлено в вашем наборе? – juharr

ответ

1

Linq Zip будет делать трюк http://msdn.microsoft.com/en-us/library/vstudio/dd267698(v=vs.100).aspx

т.е.

int[] numbers = { 1, 1, 3, 2, 2, 2 }; 
int[] words = { 1, 1, 2, 3, 2, 2 }; 

var result = numbers.Zip(words, (first, second) => {if(first != second) {return first + "/" + second;} else return second.ToString(); }); 
+0

Это похоже на работу, спасибо @marcinn. Теперь моя коллекция, очевидно, имеет много предметов (иногда сотни), как мне их объединить. я попытался в цикле, взяв следующий элемент, но это не совместит их всех. foreach (IList p in permutationCollection) { var result = p.Zip (перестановкаCollection.ElementAt (x + 1), (первая, вторая) => {if (first! = second) {return first + "/" + second;} else return second.ToString();}); } – Haxsta