public static List <string[]> GetFilteredItems() { List <ItemModel> items = SqliteDataAccess.LoadItems(); ItemFiltersModel filters = SqliteDataAccess.LoadItemFilters(); List <string[]> filteredItems = new List <string[]>(); foreach (ItemModel item in items) { bool isIgnorePassed = false; bool isFilterVolumePassed = false; bool isFilterPricePassed = false; if (filters.ignore_zero > 0) { if (item.volume > 0 && item.sell_price > 0) { isIgnorePassed = true; } } else { isIgnorePassed = true; } decimal filterMaxVolume = filters.max_volume; if (filters.user_cargo_capacity < filters.max_volume && filters.user_cargo_capacity > 0) { filterMaxVolume = filters.user_cargo_capacity; } if (filterMaxVolume > 0) { if (item.volume < filterMaxVolume) { isFilterVolumePassed = true; } } else { isFilterVolumePassed = true; } decimal filterMaxPrice = filters.max_price; if (filters.user_available_money < filters.max_price && filters.user_available_money > 0) { filterMaxPrice = filters.user_available_money; } if (filterMaxPrice > 0) { if (item.sell_price < filterMaxPrice) { isFilterPricePassed = true; } } else { isFilterPricePassed = true; } if (isIgnorePassed && isFilterVolumePassed && isFilterPricePassed && item.trade_volume > filters.min_trade_volume) { filteredItems.Add(new string[] { item.type_id.ToString(), item.name, item.volume.ToString(CultureInfo.InvariantCulture) }); } } return(filteredItems); }