У меня есть список элементов, как показано ниже.C# - поиск общих элементов в списке целых чисел
List<List<int>> testItems=new List<List<int>>();
Я добавил к нему такие вещи.
List<int> item=new List<item>();
item.clear();
item.Add(3);
item.Add(5);
item.Add(7);
testItems.Add(item);
item.clear();
item.Add(10);
item.Add(3);
testItems.Add(item);
item.clear();
item.Add(1);
item.Add(8);
item.Add(3);
item.Add(9);
testItems.Add(item);
Теперь то, что я хочу сделать, я хочу, чтобы извлечь элементы, общие для всех списков и добавить его в другой список под названием finalList.
List<int> finalList = new List<int>();
Я пробовал следующее.
int count;
foreach (List<int> a in testItems)
{
count = 0;
foreach (int b in a)
{
foreach (List<int> c in testItems)
{
foreach (int d in c)
{
if (d == b)
{
count++;
break;
}
}
}
if (count == a.Count)
finalList.Add(b);
}
}
Я знаю, что это решение не является оптимальным и не обеспечивает то, что мне нужно. Он может добавить один и тот же элемент несколько раз. Может ли кто-нибудь помочь мне исправить это?
_Все листы? У вас только один список (внутри другого списка). Вы добавляете к нему элементы и очищаете их, а не создаете новый список. Кроме того, вы можете более подробно объяснить, какова цель этого кода, и каков желаемый результат? –
Что я имею в виду под «всеми списками» - это набор списков, содержащихся в testItems. Это список целых чисел. Это длинный код. Созданный список (finalList) будет использоваться в какой-либо другой части кода –
Обязательно ли вы используете списки? Использование [HashSet] (http://msdn.microsoft.com/en-us/library/bb359438 (v = vs.110) .aspx) представляется более подходящим (и эффективным) для вашего случая здесь –