У меня есть метод, который принимает дату dtSince
и строку component
в качестве параметров. Мне нужно написать однострочный запрос linq, который ищет записи, которые встречались до dtSince
и имеет компонент component
(если указан). Я пробовал следующее:
var result = from items in MyAzureTable
where items.Occured >= dtSince
&& items.Component == (component ?? items.Component)
select items;
Но я получаю ошибку NotSupported. Я думаю, что items.Component == (component ?? items.Component)
это проблема.
Как уже упоминалось, component
может быть нулевым или пустым. Но я не могу исключить это в исходном запросе, потому что это:
var result = from items in MyAzureTable
where items.Occured >= dtSince
select items;
может вернуть более 1000 строк (что является пределом по умолчанию для таблиц Azure), и поэтому я не могу отфильтровать его с component
позже. Если я сделаю что-то похожее на приведенное ниже, запись, которую я могу искать, находится в строке 1001. Таким образом, она не даст мне результат, который я ищу.
if (!String.IsNullOrEmpty(component))
{
result = result.Where(x => x.Component == component).ToList<>();
}
Вопрос: Возможно ли иметь однострочный запрос linq, который может сначала проверить наличие непустой строки перед ее использованием в предложении where?