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

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

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

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

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

textual
Листинг программы
  1. using System.Collections.ObjectModel;
  2.  
  3.     private static void Data_CollectionChanged(object sender, System.Collections.Specialized.NotifyCollectionChangedEventArgs e)
  4.     {
  5.         Console.WriteLine("Collection was modified!!!");
  6.         if (e.NewItems != null)
  7.         {
  8.             Console.Write("Added elements: ");
  9.             foreach (var item in e.NewItems)
  10.             {
  11.                
  12.                 Console.Write(item);
  13.                 Console.Write(" ");
  14.             }
  15.         }
  16.         if (e.OldItems != null)
  17.         {
  18.             Console.Write("Removed elements: ");
  19.             foreach (var item in e.OldItems)
  20.             {
  21.                 Console.Write(item);
  22.                 Console.Write(" ");
  23.             }
  24.         }
  25.         Console.WriteLine();
  26.     }
  27.  
  28.     static void Main()
  29.     {
  30.  
  31.         var data = new ObservableCollection<int>() { 1,2,3,4,5};
  32.         data.CollectionChanged += Data_CollectionChanged;
  33.         data.Add(3);
  34.         data.Remove(1);
  35.         Console.ReadKey(true);
  36.     }

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


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

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

6   голосов , оценка 4 из 5

Нужна аналогичная работа?

Оформи быстрый заказ и узнай стоимость

Бесплатно
Оформите заказ и авторы начнут откликаться уже через 10 минут
Похожие ответы