Объединить два подсчитывающих запроса в один логический запрос

Я не могу придумать хороший способ написать это как один запрос.

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 для выполнения динамического запроса.

Другие вопросы по тегам