// Проверка всех полей на отличия от пустого(стандартного) значения 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); }
// Вывод отфильтрованного списка элементов 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); }