Ошибка конвертации CS1503

131
28 августа 2019, 13:30

Ошибка 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

Answer 1

Нужно вывести числа, которые хоть раз входят в 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". В общем, спать пора, а не код писать.

READ ALSO
Postman выводит не ожидаемый ответ на запрос [закрыт]

Postman выводит не ожидаемый ответ на запрос [закрыт]

При запуске приложения (код дефолтного контроллера):

151
Не эквивалентные повороты

Не эквивалентные повороты

Не могу понять, почему эти две строки работают по-разному:

137
C# Программное создание потоков

C# Программное создание потоков

Как создать определенное количество потоков при помощи кода? Пробовал так, но программа зависает и работает медленнее, чем если объявлять...

125
Поиск скрытого компонента (Visible = false)

Поиск скрытого компонента (Visible = false)

После InitializeComponent(); скрываю пункты MenuStripДелаю это следующим образом:

97