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

Узнай цену своей работы

Формулировка задачи:

Здравствуйте. Я тут наваял небольшой скрипт. Который отрабатывается 10 раз в секунду.
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 но знаний видимо маловато. Я тут пока еще покапаюсь по инэту - может чего нибудь и найду. А вы - вы уважаемые форумчани - помогите мне, отсыпьте чучуть ваших знаний. Кому сколько не жалко.
Совсем не кто не знает?

Решение задачи: «Упростить алгоритм взаимодействия двух разных списков»

textual
Листинг программы
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);
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы