Re[94]: Тормознутость и кривость linq
От: alex_public  
Дата: 30.04.16 17:17
Оценка:
Здравствуйте, Sinclair, Вы писали:

_>>
_>>string query="select ... from ...";
_>>if(categoryName||categoryColor||categoryGroupName) query+=" inner join ... ON(...)";//тот самый if
_>>query+=" where 1";
_>>if(categoryName) query+=" and ...";
_>>if(categoryColor) query+=" and ...";
_>>if(categoryGroupName) query+=" and ...";
_>>

S>А можно попросить сделать этот код рабочим?

Ты имеешь в виду компилируемым? ) Но тогда он будет уже зависеть от особенностей языка и соответствующих библиотек в нём. Так это просто идея была универсальная... Ну да ладно, чтобы не придирались (а то бывают тут неадекваты, которые сразу начнут орать "ааа не можешь", хотя задачка для школьника) покажу пример на той же самой библиотечке C++:
auto q=dynamic_select(db).columns(all_of(Product)).dynamic_from(Product).dynamic_where();
if(categoryName||categoryColor||categoryGroupName) q.from.add(dynamic_join(Category).on(Category.id==Product.category_id));
if(categoryName) q.where.add(Category.name.like(*categoryName+"%"));
if(categoryColor) q.where.add(Category.color==*categoryColor);
if(categoryGroupName) q.where.add(Category.group_name==*categoryGroupName);


S>А то идея-то была понятна и до этого. Дьявол начинается при проверке — то скобочку забыли дописать, то оказалось что inner join у нас в одном из вариантов набора параметров после where оказался.


Нуу в том изначальном примере join после where физически никак не мог оказаться, в любом языке. ))) Ну а в варианте с данной C++ библиотечкой ещё и все скобочки будут проконтролированы компилятором. )
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.