public void RemoveFilter(AuctionFilter filter) { if (filters.ContainsKey((byte)filter.filterType)) { List <AuctionFilter> typedFilters = null; if (filters.TryGetValue((byte)filter.filterType, out typedFilters)) { var existing = typedFilters.Find(f => f.key == filter.key); if (existing != null) { typedFilters.Remove(existing); } } } }
public void SetFilter(AuctionFilter filter) { //if already hav filters such type if (filters.ContainsKey((byte)filter.filterType)) { List <AuctionFilter> typedFilters = null; //get typed filters list if (filters.TryGetValue((byte)filter.filterType, out typedFilters)) { //try find in typed list filter with same key var existingFilter = typedFilters.Find(f => f.key == filter.key); //if not found add new filter, if (existingFilter == null) { typedFilters.Add(filter); } else { //and if found with same key, delete old filter and add new filter int index = typedFilters.FindIndex(f => f.key == filter.key); if (index >= 0) { typedFilters.RemoveAt(index); } typedFilters.Add(filter); } } } else { filters.Add((byte)filter.filterType, new List <AuctionFilter> { filter }); } }