Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.50/4: Рейтинг темы: голосов - 4, средняя оценка - 4.50
-15 / 10 / 6
Регистрация: 03.10.2012
Сообщений: 532

Упростить алгоритм взаимодействия двух разных списков

20.12.2016, 20:11. Показов 792. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Здравствуйте. Я тут наваял небольшой скрипт. Который отрабатывается 10 раз в секунду.
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
List<ulong> ListJoined = new List<ulong>();
            Libiray.Interval(() => {
                BaseDota.Lobby.members.ForEach(o =>
                {
                    if (o.id != SteamInstance.BaseClient.SteamID.ConvertToUInt64())
                    {
                        if (!ListJoined.Contains(o.id))
                        {
                            Console.WriteLine("User ["+o.name+" / "+o.id+"] has joined to lobby!");
                            ListJoined.Add(o.id);
                        }
                    }
                });
                List<ulong> leavelist = new List<ulong>();
                ListJoined.ForEach(o =>
                {
                    if (BaseDota.Lobby.members.FirstOrDefault(o2 => o2.id == o) == null)
                    {
                        Console.WriteLine("User [" + o + "] has leave to lobby!");
                        leavelist.Add(o);
                    }
                });
                foreach (var r in leavelist)
                    ListJoined.Remove(r);
 
            }, 0.1);
помогите его оптимизировать.
BaseDota.Lobby.members содержит список экземпляров CDOTALobbyMember
и мне надо понять - когда кто то ворвался в список, а когда покинул, Вот выше грубый метод. Я видел примеры как сравнить 2 одинаковых List. Но вот как сравнить 2 чучуть разных списка - хз. Видимо какнибудь через Linq но знаний видимо маловато.

Я тут пока еще покапаюсь по инэту - может чего нибудь и найду. А вы - вы уважаемые форумчани - помогите мне, отсыпьте чучуть ваших знаний. Кому сколько не жалко.

Добавлено через 1 час 42 минуты
Совсем не кто не знает?
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
20.12.2016, 20:11
Ответы с готовыми решениями:

Взаимодействия между экземплярами программы на разных компьютерах
Всем привет! У меня есть приложение написанное на C#(WPF). В нем реализован такой функционал: 1. Приложение подключается к БД и загружает...

Упростить часть кода в сумме двух списков
Дан список (a1, a2,…, aN). Вычислить значение выражения- max(a2,a4,…)+min(a1,a3,…). Рабочий код: (defun x (list index f element) ...

Список из разных элементов двух списков
Здраствуйте очень нужна помощь в написании простой програмы : создать новый список из елемнтов одного списка которых нету в другом \...

2
 Аватар для John999
230 / 113 / 79
Регистрация: 17.10.2016
Сообщений: 312
21.12.2016, 00:41
Цитата Сообщение от SkoTi Посмотреть сообщение
когда кто то ворвался в список, а когда покинул,
наблюдаемая коллекция не подойдет для задачи ? ObservableCollection<T>

C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
using System.Collections.ObjectModel;
 
    private static void Data_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
    {
        Console.WriteLine("Collection was modified!!!");
        if (e.NewItems != null)
        {
            Console.Write("Added elements: ");
            foreach (var item in e.NewItems)
            {
               
                Console.Write(item);
                Console.Write(" ");
            }
        }
        if (e.OldItems != null)
        {
            Console.Write("Removed elements: ");
            foreach (var item in e.OldItems)
            {
                Console.Write(item);
                Console.Write(" ");
            }
        }
        Console.WriteLine();
    }
 
    static void Main()
    {
 
        var data = new ObservableCollection<int>() { 1,2,3,4,5};
        data.CollectionChanged += Data_CollectionChanged;
        data.Add(3);
        data.Remove(1);
        Console.ReadKey(true);
    }
1
-15 / 10 / 6
Регистрация: 03.10.2012
Сообщений: 532
21.12.2016, 05:20  [ТС]
John999, Спасибо вам конечно. Я не знал что так можно с коллекцией.
На данный момент я не имею доступ к изначальнйо колекции. Я могу лишь в N время конвертировать изначальную коллекцию. А получается это не просто изменение в плюс или минус.

Добавлено через 5 минут
Тут как бы я на самом деле краб... Я не увидел и не понял изначально что можно через стим получать доп события. Включая даже эти. Об увелечении или уменьшении. Сейчас вроде бы уидел но еще не протестировал. Завтра этим займусь.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
21.12.2016, 05:20
Помогаю со студенческими работами здесь

сравнение двух списков на разных листах с несколькими условиями
Ребята здравствуйте! не могу понять как мне сделать такой маневр, хотелось формулой узнать в каком из списков нет человека который так или...

Алгоритм сравнение двух списков list, для синхронизации таблицы
Добрый день форумчане. Очень нужна ваша помощь, срочно. Необходимо сделать синхронизацию локальной таблицы с таблицей загруженной из...

Как из двух списков сделать один список кортежей/списков
Доброго времени суток! Буду очень благодарен, если поможете из двух списков, к примеру a и b, сделать список c, который содержит пары...

Взаимодействия с объектами из разных форм
В С# шарп новичок, изучала на soloLern все основы, начала работать с C# wpf, много чего могу не знать и не понимать, но стараюсь влиться,...

Сумма двух списков списков в Prolog
Есть условие задачи: Построение списка, являющегося поэлементной суммой двух числовых списков одинаковой длины. Не могу понять, как так...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&amp;d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru