Объединить два подсчитывающих запроса в один логический запрос
Я не могу придумать хороший способ написать это как один запрос.
int count1 = query1.Count();
int count2 = query2.Count();
return count1 > count2;
Обратите внимание, что меня интересуют способы написания одного запроса, который возвращает логическое значение и оценивается один раз на сервере.
Обратите внимание, что мне интересны способы написания этого с помощью LINQ, а не с помощью SQL.
2 ответа
Пытаться
return query1.Count() > query2.Count();
Не стоит пытаться выполнить два несвязанных запроса за один и тот же серверный вызов, но вот оно:
SELECT CASE WHEN (SELECT COUNT(*) FROM Products)
> (SELECT COUNT(*) FROM Orders)
THEN CAST(1 as bit)
ELSE CAST(0 AS BIT)
Однако я серьезно сомневаюсь, что вы можете получить LINQ для создания такого запроса. Вы должны были бы вызвать хранимую процедуру вместо этого.
Что случилось с
var result= query1.Count() > query2.Count();
return result; // result is of type bool
РЕДАКТИРОВАТЬ:
Если вы действительно хотите выполнить его как один запрос на сервере, вы можете использовать DataContext.ExecuteQuery для выполнения динамического запроса.