LINQ - Динамическое построение запроса
От: J_K  
Дата: 16.07.08 21:09
Оценка:
Здравствуйте,
помогите разобраться. У меня на сайте пользователь может выбрать некоторые критерии, в соответствии с которыми производится выборка. Поскольку критериев много, решено было отказаться от ХП и использовать только LINQ. Но тут возник затык — оказалось, я не знаю, как же сделать запрос динамическим. Предположим, надо выбрать покупателей, относящихся к определенным категориям или категории. Т.е. sql запросы могут быть такими:

select * from customers where category = 4;

select * from customers where category = 4 and category = 8;

select * from customers where category = 4 and category = 8 and category = 9;

select * from customers;


В последнем случае пользователю надо выбрать всех покупателей безотносительно категории.

Предполагалось, что запрос на LINQ мог бы выглядеть примерно следующим образом (это ПСЕВДОКОД!)
Категории, для которых надо производить выборку, содержатся в List<int>


List<int> categories = new List<int>(){4,8}; //на самом деле массив передается в качестве параметра и содержит произвольный набор категорий и может быть пустым

//дальше идет псевдокод

var result;
foreach(int cat in categories)
{
    result = customers.Where(r => r == cat);
}
result = result.Select();


Т.е. суть в том, чтобы динамически производить операцию where в зависимости от выбора пользователя.
Данный код, естественно, не работает.
Как заставить его работать? Может, вообще как-то по-другому это делается?
Спасибо
Life is very short and there's no time
for fussing and fighting... (C) Paul McCartney & John Lennon
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.