Упростить алгоритм взаимодействия двух разных списков - C#
Формулировка задачи:
Здравствуйте. Я тут наваял небольшой скрипт. Который отрабатывается 10 раз в секунду.
помогите его оптимизировать.
BaseDota.Lobby.members содержит список экземпляров CDOTALobbyMember
и мне надо понять - когда кто то ворвался в список, а когда покинул, Вот выше грубый метод. Я видел примеры как сравнить 2 одинаковых List. Но вот как сравнить 2 чучуть разных списка - хз. Видимо какнибудь через Linq но знаний видимо маловато.
Я тут пока еще покапаюсь по инэту - может чего нибудь и найду. А вы - вы уважаемые форумчани - помогите мне, отсыпьте чучуть ваших знаний. Кому сколько не жалко.
Листинг программы
- 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);
Совсем не кто не знает?
Решение задачи: «Упростить алгоритм взаимодействия двух разных списков»
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);
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д