Выборка по комбинации разных параметров - C#

Узнай цену своей работы

Формулировка задачи:

Доброго времени. Подскажите пожалуйста. Всю голову сломал. Как реализовать множественную выборку из таблиц.

Мучаю C#

У меня есть таблицы
 
id,int
number_car,string
color,string
model,string
producer,string
punishment,bool
ЗЫ: punishment - типа штраф, наказание.
 
id,int
number_car,string
sum,int
description,string
ЗЫЫ: сорри, за странный вид таблиц, что-то [tr][td] он игнорирует... Необходимо выводить список автомобилей в соответствии с фильтром. Но комбинаций его задания много, не писать же запрос под каждый случай! О_О Вопрос, а как это делается по человечески? Например: Вывести авто заданного цвета и модели Вывести авто определённой модели Вывести авто определённой модели и по фрагменту номера Вывести авто по фрагменту номера и цвету Вывести авто на которые налагались штрафы, но только определённого цвета Вывести авто сумма штрафов у которых больше N и определённый производитель... И так далее... Что-то типа "Отбора и сортировки" в 1С http://v8.1c.ru/overview/images/PlUser15.GIF Отбор хочу делать из List, с помощью Linq... Если можно как-то из List SQL запросами дёргать, тоже можно, не принципиально.

Решение задачи: «Выборка по комбинации разных параметров»

textual
Листинг программы
    internal class Program
    {
        public static void Main(string[] args)
        {
            List<Car> cars = new List<Car>
            {
                new Car(1, "1212", "Black", "911", "Porsche", true),
                new Car(2, "7777", "White", "SLS", "Mercedes", false),
                new Car(3, "7989", "Silver", "Panamera", "Porsche", true),
                new Car(4, "1023", "Red", "911", "Porsche", true),
                new Car(5, "7337", "Red", "Mustang", "Ford", false)
            };
 
            // Все красные машины
            var res = cars.Color("Red");
            Console.WriteLine(String.Join(Environment.NewLine, res));
            Console.WriteLine();
 
            // Красные со штрафом
            res = cars.Color("Red").Punishment(true);
            Console.WriteLine(String.Join(Environment.NewLine, res));
            Console.WriteLine();
 
            // Порше со штрафом
            res = cars.Producer("Porsche").Punishment(true);
            Console.WriteLine(String.Join(Environment.NewLine, res));
            Console.WriteLine();
        }
    }
 
    static class FilteringCar
    {
        public static IEnumerable<Car> Model(this IEnumerable<Car> cars, string model)
        {
            return cars.Where(car => car.Model == model);
        }        
        
        public static IEnumerable<Car> Producer(this IEnumerable<Car> cars, string producer)
        {
            return cars.Where(car => car.Producer == producer);
        }
 
        public static IEnumerable<Car> Color(this IEnumerable<Car> cars, string color)
        {
            return cars.Where(car => car.Color == color);
        }
 
        public static IEnumerable<Car> Punishment(this IEnumerable<Car> cars, bool punishment)
        {
            return cars.Where(car => car.Punishment == punishment);
        }
    }
 
 
    internal class Car
    {
        public int Id { get; set; }
 
        public string NumberCar { get; set; }
 
        public string Color { get; set; }
 
        public string Model { get; set; }
 
        public string Producer { get; set; }
 
        public bool Punishment { get; set; }
 
        public Car(int id, string numberCar, string color, string model, string producer, bool punishment)
        {
            Id = id;
            NumberCar = numberCar;
            Color = color;
            Model = model;
            Producer = producer;
            Punishment = punishment;
        }
 
        public override string ToString()
        {
            return string.Format("NumberCar: {0}, Color: {1}, Model: {2}, Producer: {3}, Punishment: {4}", NumberCar, Color, Model, Producer, Punishment);
        }
    }

ИИ поможет Вам:


  • решить любую задачу по программированию
  • объяснить код
  • расставить комментарии в коде
  • и т.д
Попробуйте бесплатно

Оцени полезность:

6   голосов , оценка 4 из 5
Похожие ответы