powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / except между list<object>
13 сообщений из 88, страница 4 из 4
except между list<object>
    #39722725
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewIvanovecя сравниваю так:
Код: c#
1.
2.
3.
4.
5.
6.
7.
foreach (var item in list1)
{
    if (list2.Where(c => c.vopros == item.vopros).Count() == 0)
    {
        list3.Add(item);
    }
}



но в одном списке больше 2 млн и в другом тоже и получается очень долго.
можно ускориться как-то ?
У Вас же List<T> используется, зачем Linq?

List<T>.Exists(Predicate<T>)

Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
foreach (var item in list1)
{
    if (list2.Exists(c => c.vopros == item.vopros))
    {
        continue;
    }

    list3.Add(item);
}
...
Рейтинг: 0 / 0
except между list<object>
    #39722727
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123Агнец за бортом,
Тебе рядом IL код не нравился, а тут чем пугаешь автора?))

Вообще тебя не понял. Готовое решение, тебе не нравится?для автора сложно. Ему 1 или 3 строки надо.
...
Рейтинг: 0 / 0
except между list<object>
    #39722729
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123для автора сложно. Ему 1 или 3 строки надо.

Как в этом куске треша?

skyANA
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
foreach (var item in list1)
{
    if (list2.Exists(c => c.vopros == item.vopros))
    {
        continue;
    }

    list3.Add(item);
}
...
Рейтинг: 0 / 0
except между list<object>
    #39722736
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Угу))
Код: c#
1.
2.
ЦИКЛ ТО
    ПОКА УСЛОВИЕ... 
...
Рейтинг: 0 / 0
except между list<object>
    #39722749
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Petro123Агнец за бортом,
Угу))
Код: c#
1.
2.
ЦИКЛ ТО
    ПОКА УСЛОВИЕ... 



With comparator it takes 6,8047 milliseconds
With pure LINQ it takes 44,5104 milliseconds
skyana trash it takes 4131,9624 milliseconds

Короче, на двух лямах объектов код от skyana уходит в глубокий анабиоз.

Это на 20 000 объектах, иначе никак - время растёт по экспоненте.

Сложность алгоритма? Не, не слышали.
...
Рейтинг: 0 / 0
except между list<object>
    #39722751
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Агнец за бортомNewIvanovec,

int GetHashCode(Doc obj)
{
return obj.vopros.GetHashCode();
}


Большое спасибо. пробую применить.
Если у меня 2 поля в объекте, тогда как будет выглядеть хэш таблица
Код: c#
1.
2.
3.
4.
      public int GetHashCode(Doc obj)
            {
                return obj.vopros.GetHashCode();
            }
...
Рейтинг: 0 / 0
except между list<object>
    #39722752
Фотография Petro123
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортом,
Да. Хороший пример.
...
Рейтинг: 0 / 0
except между list<object>
    #39722761
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
у List<T> кстати, есть бинарный поиск BinarySearch, список должен конечно же быть отсортирован. у него сложность O(log n)
...
Рейтинг: 0 / 0
except между list<object>
    #39722832
NewIvanovec
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Ещё раз большое спасибо!
последний пример от Агнец за бортом в моём случае за секунды сделал except на 2 млн
...
Рейтинг: 0 / 0
except между list<object>
    #39722842
Roman Mejtes
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
NewIvanovec,

хеш не гарантирует уникальность, хеш-таблица устроена немного сложнее
...
Рейтинг: 0 / 0
except между list<object>
    #39722868
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомPetro123Агнец за бортом,
Угу))
Код: c#
1.
2.
ЦИКЛ ТО
    ПОКА УСЛОВИЕ... 




With comparator it takes 6,8047 milliseconds
With pure LINQ it takes 44,5104 milliseconds
skyana trash it takes 4131,9624 milliseconds

Короче, на двух лямах объектов код от skyana уходит в глубокий анабиоз.

Это на 20 000 объектах, иначе никак - время растёт по экспоненте.

Сложность алгоритма? Не, не слышали.
Самый быстрый способ решил найти?

Лови:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
public struct Doc
{
    public readonly string vopros;

    public Doc(string vopros)
    {
        this.vopros = vopros;
    }

    public override int GetHashCode()
    {
        return vopros.GetHashCode();
    }
}


Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
var set = new HashSet<Doc>(Enumerable.Range(0, 2000000).Select(x => new Doc(x.ToString())));
var stopwatch2 = new Stopwatch();
stopwatch2.Start();

set.ExceptWith(list2);

stopwatch2.Stop();

Console.WriteLine($"With HashSet it takes {stopwatch2.Elapsed.TotalMilliseconds.ToString()} milliseconds");




With comparator it takes 1068.0949 milliseconds
With pure LINQ it takes 6091.5311 milliseconds
With HashSet it takes 573.9623 milliseconds
...
Рейтинг: 0 / 0
except между list<object>
    #39722895
Агнец за бортом
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
skyANAЛови

Че "лови", вынес создание сета за таймер и типа всех обманул?

Что ты за эмо такое, лажа за лажей.
...
Рейтинг: 0 / 0
except между list<object>
    #39722930
Фотография skyANA
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Агнец за бортомskyANAЛови

Че "лови", вынес создание сета за таймер и типа всех обманул?

Что ты за эмо такое, лажа за лажей.
Хочешь создание во всех случаях включитбь в таймер? Не вопрос:

With comparator it takes 2138.3912 milliseconds
With pure LINQ it takes 8084.1227 milliseconds
With HashSet it takes 1642.8458 milliseconds
...
Рейтинг: 0 / 0
13 сообщений из 88, страница 4 из 4
Форумы / WinForms, .Net Framework [игнор отключен] [закрыт для гостей] / except между list<object>
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]