Re[87]: Тормознутость и кривость linq
От: · Великобритания  
Дата: 27.04.16 17:35
Оценка: +1
Здравствуйте, alex_public, Вы писали:
G>>Теперь задача посложнее:
G>>
G>>if(categoryFilter != null)
G>>{
G>>   products = products.Where(p => p.Category.Name.StartsWith(categoryFilter));
G>>}
G>>

G>>Теперь от параметра не просто добавляется фильтр, а еще и делается джоин. Без параметров никаких джоинов нет.
G>>Сама коллекция product может содержать быть отфильтрована и другими предикатами до фильтра по имени категории.
G>>Как это сделать на склейке строк или твоей библиотеке?
G>>Как родишь код, подумай что таких параметров на каждый запрос будет десяток.
_>Мне не очевидно из данного кода что там за join, зачем он и вообще о чём речь. Или показывай подробнее про задачу, таблицы и т.п. или просто покажи какой генерируется итоговый sql.
Плохо, что неочевидно. Показывает, что не сталкивался со сложными запросами, поэтому и считаешь что их реально генерить в compile time.
псевдокод такой примерно:
List<Product> getProducts(String categoryFilter)
{
   if(categoryFilter == null)
      return resultOfQuery(
        "SELECT * FROM Product");
   else
      return resultOfQuery(
        "SELECT * FROM Product p"+
            " INNER JOIN Category c ON(c.id=p.categoryId)"+
            " WHERE c.name LIKE '{categoryFilter}%'")
}

а теперь представь себе что таких nullable-фильтров 10 штук. Получается 1024 варианта запросов.
но это не зря, хотя, может быть, невзначай
гÅрмония мира не знает границ — сейчас мы будем пить чай
 
Подождите ...
Wait...
Пока на собственное сообщение не было ответов, его можно удалить.