Разница между 2 массивами
От: e.thrash  
Дата: 16.10.23 11:54
Оценка: -1
Привет

Вроде задача простая, но почему-то нет функции которая возвращает разницу в linq.

Сделал так

var list1 = new [] { 1, 4, 5};
var list2 = new [] { 3, 4, 8};

var query = list1.Except(list2).Concat(list2.Except(list1));



Есть какие-то функции готовые или хотя бы чтобы не было двойного прохода по массиву или только так?
Re: Разница между 2 массивами
От: BlackEric http://black-eric.lj.ru
Дата: 16.10.23 12:08
Оценка:
Здравствуйте, e.thrash, Вы писали:

ET>Привет


ET>Вроде задача простая, но почему-то нет функции которая возвращает разницу в linq.


ET>Сделал так


ET>
ET>var list1 = new [] { 1, 4, 5};
ET>var list2 = new [] { 3, 4, 8};

ET>var query = list1.Except(list2).Concat(list2.Except(list1));
ET>



ET>Есть какие-то функции готовые или хотя бы чтобы не было двойного прохода по массиву или только так?


using System;
using System.Linq;
                    
public class Program
{
    public static void Main()
    {
        int[] num1 = { 1, 2, 3, 4, 3, 55, 23, 2 };           
        int[] num2 = { 55, 23, 45, 50, 80 };
 
        var all = num1.Union(num2).ToArray();
        Array.ForEach(all, n => Console.WriteLine(n));
    }
}
https://github.com/BlackEric001
Re: Разница между 2 массивами
От: karbofos42 Россия  
Дата: 16.10.23 12:32
Оценка: 117 (6) +2
Здравствуйте, e.thrash, Вы писали:

ET>Есть какие-то функции готовые или хотя бы чтобы не было двойного прохода по массиву или только так?


Как вариант:
var set = new HashSet<int>(list1);
set.SymmetricExceptWith(list2);
Re: Разница между 2 массивами
От: Слава  
Дата: 16.10.23 14:20
Оценка: +1
Здравствуйте, e.thrash, Вы писали:

ET>Есть какие-то функции готовые или хотя бы чтобы не было двойного прохода по массиву или только так?


Вы наверное имели в виду разницу между множествами, без учёта позиций элементов массива. И это будет два списка, "есть в 1, но нет в 2", "есть в 2, но нет в 1".

А то ж может вы git diff хотите получить.
Re[2]: Разница между 2 массивами
От: e.thrash  
Дата: 16.10.23 19:02
Оценка:
Здравствуйте, Слава, Вы писали:

С>Здравствуйте, e.thrash, Вы писали:


ET>>Есть какие-то функции готовые или хотя бы чтобы не было двойного прохода по массиву или только так?


С>Вы наверное имели в виду разницу между множествами, без учёта позиций элементов массива. И это будет два списка, "есть в 1, но нет в 2", "есть в 2, но нет в 1".


да, именно это имел ввиду, но честно говоря не понял чем отличается моя постановка "Разница между 2 массивами". То что массив это упорядоченный список?
Re[3]: Разница между 2 массивами
От: Слава  
Дата: 16.10.23 19:05
Оценка: +2
Здравствуйте, e.thrash, Вы писали:

ET>да, именно это имел ввиду, но честно говоря не понял чем отличается моя постановка "Разница между 2 массивами". То что массив это упорядоченный список?


Да, в массиве есть порядок элементов

Массивы 2, 1 и 1, 2 разные, а множества одинаковые.
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.