Пример #1
0
 // Проверка всех полей на отличия от пустого(стандартного) значения
 public bool ChangedValues()
 {
     if (!EMPTY_VALUES.Contains(this.mark))
     {
         return(true);
     }
     if (!EMPTY_VALUES.Contains(this.manufacturer))
     {
         return(true);
     }
     if (!EMPTY_VALUES.Contains(this.type))
     {
         return(true);
     }
     if (!EMPTY_VALUES.Contains(this.since_date_of_manufacture))
     {
         return(true);
     }
     if (!EMPTY_VALUES.Contains(this.till_date_of_manufacture))
     {
         return(true);
     }
     if (!EMPTY_VALUES.Contains(this.since_date_of_registration))
     {
         return(true);
     }
     if (!EMPTY_VALUES.Contains(this.till_date_of_registration))
     {
         return(true);
     }
     return(false);
 }
Пример #2
0
            // Вывод отфильтрованного списка элементов
            static public void PrintFilteredCars(List <Car> Cars, FilterStruct Filter)

            /*
             *  Параметры:
             *      Cars    - список авто для фильтрации
             *      Filter  - фильтра по которому происходит фильтрация
             */
            {
                // Если фильтр сброшен
                if (!Filter.ChangedValues())
                {
                    // Выводим входной список
                    PrintCars(Cars);
                    return;
                }

                // Регулярные выражения
                Regex regex_mark         = null;
                Regex regex_manufacturer = null;
                // Результат поиска по регулярному выражению
                MatchCollection matches;
                // Результирующий список
                List <Car> result = new List <Car>();

                // Фильтруем входной список
                foreach (Car El in Cars)
                {
                    // Марка
                    if (!EMPTY_VALUES.Contains(Filter.mark))
                    {
                        // Регулярное выражения на основе введенного поля фильтра
                        regex_mark = new Regex(Filter.mark);
                        // Содержится ли подстрока
                        // "ud" содержится в "Audi"
                        matches = regex_mark.Matches(El.mark);
                        if (matches.Count == 0)
                        {
                            continue;
                        }
                    }

                    // Производитель
                    if (!EMPTY_VALUES.Contains(Filter.manufacturer))
                    {
                        // Регулярное выражения на основе введенного поля фильтра
                        regex_manufacturer = new Regex(Filter.manufacturer);
                        // Ищем совпадения в строке
                        matches = regex_manufacturer.Matches(El.manufacturer);
                        if (matches.Count == 0)
                        {
                            continue;
                        }
                    }

                    // Тип авто
                    if (!EMPTY_VALUES.Contains(Filter.type))
                    {
                        // Ищем совпаднеия в строке
                        if (Filter.type.Length > 0 & El.type != Filter.type)
                        {
                            continue;
                        }
                    }

                    // Дата производства
                    if (!EMPTY_VALUES.Contains(Filter.since_date_of_manufacture))
                    {
                        // Дата производства раньше минимальной даты(даты С) - то пропускаем
                        if (El.date_of_manufacture < DateTime.Parse(Filter.since_date_of_manufacture))
                        {
                            continue;
                        }
                    }
                    if (!EMPTY_VALUES.Contains(Filter.till_date_of_manufacture))
                    {
                        // Дата производства позже максимальной даты(даты С) - то пропускаем
                        if (El.date_of_manufacture > DateTime.Parse(Filter.till_date_of_manufacture))
                        {
                            continue;
                        }
                    }

                    // Дата регистрации
                    if (!EMPTY_VALUES.Contains(Filter.since_date_of_registration))
                    {
                        // Дата регистрации раньше минимальной даты(даты С) - то пропускаем
                        if (El.date_of_registration < DateTime.Parse(Filter.since_date_of_registration))
                        {
                            continue;
                        }
                    }
                    if (!EMPTY_VALUES.Contains(Filter.till_date_of_registration))
                    {
                        // Дата регистрации позже максимальной даты(даты С) - то пропускаем
                        if (El.date_of_registration > DateTime.Parse(Filter.till_date_of_registration))
                        {
                            continue;
                        }
                    }

                    // Если мы тут, то все поля удовлетворяют
                    result.Add(El);
                }

                // Выводим отфильтрованный список
                PrintCars(result);
            }