Radzhab
@Radzhab

Как сравнить два списка?

Есть два списка
var lst1 = new List<string>(){"1","2","3"};
var lst2 = new List<string>(){"4","2","3"};

С помощью Intersect я вывожу те элементы которые повторяются однако хотелось бы узнать сколько раз повторяется каждый элемент.

var rez = lst1.Intersect(lst2); // тут результат 2 и 3

А хотелось бы так
var rez = lst1.Method(lst2)
2 встречается 2 раза
3 встречается 2 раза.
  • Вопрос задан
  • 256 просмотров
Пригласить эксперта
Ответы на вопрос 2
lexxpavlov
@lexxpavlov
Программист, преподаватель
Сначала определите, какие элементы совпадают в отдельный список (с помощью Intersect). А потом в цикле проверяйте, есть ли каждый элемент требуемого списка в этот проверочный список (с помощью Contains).
Ответ написан
Комментировать
ArXen42
@ArXen42
Можно занести результат Interselect в словарь элемент - количество вхождений, потом пробежаться в цикле по листам, подсчитывая конкретное количество. Что-нибудь вроде
var lst1 = new List<string>(){"1", "2", "3"};
		var lst2 = new List<string>(){"4", "2", "3"};

		var intersect = new List<String>(lst1.Intersect(lst2));
		var res = new Dictionary<String, Int32>();
		intersect.ForEach(el => res.Add(el,0));

		foreach (var el in lst1)
			if (res.ContainsKey(el))
				res[el]++;
		foreach (var el in lst2)
			if (res.ContainsKey(el))
				res[el]++;


		foreach (var el in res)
			Console.WriteLine("{0}: {1} раз(а)", el.Key, el.Value);
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы