Ошибка CS1503 Аргумент 2: не удается преобразовать из "System.Collections.Generic.IEnumerable" в "System.Collections.Generic.IEqualityComparer". Algorithm2
static void Main(string[] args)
{
string str_1, str_2, str_3;
using (var sr = new StreamReader("d:\\Lenovo\\nextLevel.txt"))
{
sr.ReadLine();
str_1 = sr.ReadLine();
sr.ReadLine();
str_2 = sr.ReadLine();
sr.ReadLine();
str_3 = sr.ReadLine();
}
var result = str_1.Split(',').Select(int.Parse).Union(str_2.Split(',').Select(int.Parse)).Distinct(str_3.Split(',').Select(int.Parse));
}
это операции с множествами каждый str_ это строка в файле с набором чисел, там где при чтени отсутсвует присваивание - читается строка которая отвечает за кол-во чисел в следующей строке(в тех наборах). Нужно вывести числа, которые хоть раз входят в str_1 и 2, но не входят в str_3
Нужно вывести числа, которые хоть раз входят в str_1 и 2, но не входят в str_3
"Хоть раз входят" - это на языке linq будет Intersect
, а "не входят" - это Except
. Смотрите:
string str_1 = "123,23,33,55";
string str_2 = "44,66,33,123";
string str_3 = "51,12,123";
var e1 = str_1.Split(',').Select(int.Parse);
var e2 = str_2.Split(',').Select(int.Parse);
var e3 = str_3.Split(',').Select(int.Parse);
e1.Intersect(e2).Dump();
var result = e1.Intersect(e2).Except(e3);
result.Dump();
На этих конкретных числах: 123 и 33 входят в e1 и e2, но 123 есть в третьем. а 33 нету, итого:
Можете обратно записать в однострочник, я разбил для наглядности.
Для обновлённого вопроса (добавленного примера данных) логика такая:
string str_1 = "1,2,6,4";
string str_2 = "2,3,4";
string str_3 = "1,4,5";
var e1 = str_1.Split(',').Select(int.Parse);
var e2 = str_2.Split(',').Select(int.Parse);
var e3 = str_3.Split(',').Select(int.Parse);
e1.Union(e2).Dump();
var result = e1.Union(e2).Except(e3);
result.Dump();
Итог:
Словами это "найти элементы которые входят хотя бы раз в e1, е2 - но не входят в е3". А я первое условие подумал "входят одновременно и в е1 и в е2". В общем, спать пора, а не код писать.
Виртуальный выделенный сервер (VDS) становится отличным выбором
При запуске приложения (код дефолтного контроллера):
Как создать определенное количество потоков при помощи кода? Пробовал так, но программа зависает и работает медленнее, чем если объявлять...
После InitializeComponent(); скрываю пункты MenuStripДелаю это следующим образом: