У меня есть две коллекции String
как
List<String> l_lstOne = new List<String> { "100", "1X0", "X11", "XXX" },
l_lstTwo = new List<String> { "000", "110", "100", "000" };
Мне нужно сравнить два списка и сделать второй список как
{ "000", "1X0", "X00", "XXX" }
Примечание:
Оба списка будут содержать одинаковое количество элементов, а длина каждого элемента будет одинаковой.
Сравнение похоже на
- Если элемент mth в
l_lstOne
имеет 'X' в n-й позиции, n-ную позицию mth в l_lstTwo следует заменить на 'X'.
Пример * * тысяча двадцать-один
l_lstOne l_lstTwo Output
100 000 000
1X0 110 1X0
X11 100 X00
Итак, для решения этой проблемы я использовал вложенный цикл, вот мой исходный код,
for (int l_nIndex = 0; l_nIndex < l_lstTwo.Count; l_nIndex++)
{
String l_strX = String.Empty;
for (int l_nInnerIndex = 0; l_nInnerIndex < l_lstTwo[l_nInnerIndex].Length; l_nInnerIndex++)
{
l_strX += l_lstOne[l_nIndex][l_nInnerIndex] == 'X' ? 'X' : l_lstTwo[l_nIndex][l_nInnerIndex];
}
l_lstTwo[l_nIndex] = l_strX;
}
Этот код работает нормально, но дело в том, что для его выполнения требуется больше времени, т. Е. Почти 600 миллисекунд для обработки 200000 элементов и каждого из них длиной 16.
И, кроме того, мне нужен метод Linq или Lambda для решения этой проблемы. Поэтому, пожалуйста, помогите мне сделать это. Заранее спасибо.