Выборка по комбинации разных параметров - C#
Формулировка задачи:
Доброго времени.
Подскажите пожалуйста. Всю голову сломал.
Как реализовать множественную выборку из таблиц.
ЗЫ: punishment - типа штраф, наказание.
ЗЫЫ: сорри, за странный вид таблиц, что-то [tr][td] он игнорирует...
Необходимо выводить список автомобилей в соответствии с фильтром.
Но комбинаций его задания много, не писать же запрос под каждый случай! О_О
Вопрос, а как это делается по человечески?
Например:
Вывести авто заданного цвета и модели
Вывести авто определённой модели
Вывести авто определённой модели и по фрагменту номера
Вывести авто по фрагменту номера и цвету
Вывести авто на которые налагались штрафы, но только определённого цвета
Вывести авто сумма штрафов у которых больше N и определённый производитель...
И так далее...
Что-то типа "Отбора и сортировки" в 1С
http://v8.1c.ru/overview/images/PlUser15.GIF
Отбор хочу делать из List, с помощью Linq...
Если можно как-то из List SQL запросами дёргать, тоже можно, не принципиально.
Мучаю C#
У меня есть таблицыid,int |
number_car,string |
color,string |
model,string |
producer,string |
punishment,bool |
id,int |
number_car,string |
sum,int |
description,string |
Решение задачи: «Выборка по комбинации разных параметров»
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);
- }
- }
ИИ поможет Вам:
- решить любую задачу по программированию
- объяснить код
- расставить комментарии в коде
- и т.д