Даны две последовательности а и b. Нужно сравнить их не учитывая порядок следования элементов (он может быть разный), т.е. что все элементы из a есть в b и наоборот.
Какие могут быть еще вариынт кроме тупого a.OrderBy(...).SequenceEquals(b.OrderBy(...))?
Здравствуйте, Аноним, Вы писали:
А>Даны две последовательности а и b. Нужно сравнить их не учитывая порядок следования элементов (он может быть разный), т.е. что все элементы из a есть в b и наоборот.
А>Какие могут быть еще вариынт кроме тупого a.OrderBy(...).SequenceEquals(b.OrderBy(...))?
Except?
Re[2]: LINQ: Сравнить две последовательности
От:
Аноним
Дата:
27.08.10 11:03
Оценка:
Здравствуйте, Lloyd, Вы писали:
L>Except?
тоже так думал но не будет работать если в b есть все что есть в а но еще другие элементы:
Здравствуйте, Аноним, Вы писали:
А>тоже так думал но не будет работать если в b есть все что есть в а но еще другие элементы:
А>a — 1 2 3 А>b — 1 2 3 4 5
А>a.Except(b) — неверный результат
А>Даны две последовательности а и b. Нужно сравнить их не учитывая порядок следования элементов (он может быть разный), т.е. что все элементы из a есть в b и наоборот. А>Какие могут быть еще вариынт кроме тупого a.OrderBy(...).SequenceEquals(b.OrderBy(...))?
Я сделал в лоб:
Для каждого элемента в первой последовательности ищу эквивалентный во второй и помечаю его как "найденный".
Для поиска использую LINQ, да и свой метод оформил как экстендер. Получается, я в теме
Здравствуйте, Аноним, Вы писали:
А>Даны две последовательности а и b. Нужно сравнить их не учитывая порядок следования элементов (он может быть разный), т.е. что все элементы из a есть в b и наоборот.
А>Какие могут быть еще вариынт кроме тупого a.OrderBy(...).SequenceEquals(b.OrderBy(...))?
Равны ли такие последовательности: { 1, 1, } и { 1, }?
Если их можно считать равными, то
var result = new HashSet<T>(left).SetEquals(right);
Help will always be given at Hogwarts to those who ask for it.
Здравствуйте, Аноним, Вы писали:
А>тоже так думал но не будет работать если в b есть все что есть в а но еще другие элементы:
А>a — 1 2 3 А>b — 1 2 3 4 5
А>a.Except(b) — неверный результат
Except внутрях просто заливает обе последовательности в HashSet-ы и экстрактит один из другого. Сделай так же в своем коде.
Здравствуйте, Lloyd, Вы писали:
А>>a.Except(b) — неверный результат
L>Except внутрях просто заливает обе последовательности в HashSet-ы и экстрактит один из другого. Сделай так же в своем коде.