2013-05-28 2 views
0

Я хочу передать действительный идентификатор или -1 («ВСЕ») из раскрывающегося списка. Могу ли я выбрать строки «Все» или одну строку на основе выбранной опции из ddl из таблицы, используя один запрос linq?выберите один или несколько записей, используя один запрос linq

+0

опубликуйте свой запрос, чтобы мы могли его обновить –

ответ

0

Вы можете добавить ИЛИ в инструкцию, чтобы получить результат. В основном, (@value = -1) ИЛИ (id = @value). Всякий раз, когда значение равно -1, оно возвращает все значение, в противном случае мы будем ложными и возвращаем только соответствующую запись.

0

Наличие OR в LINQ может иногда приводить к сканированию полного стола и неоптимальным результатам поиска.

Вместо того, чтобы условия внутри вашего заявления LINQ, я рекомендовал бы создать свой запрос LINQ условно на основе того, хотите ли вы один результат или «все»:

// Initialize your select 
var query = db.Select(r => r); 

// Conditionally add the "where" 
if (selectedValue != -1) 
    query = query.Where(n => n.id == selectedValue); 

// Collect your results 
foreach (var record in query) 
{ 
    // ... 
} 

Если вы хотите, чтобы все записи, а затем ваш запрос не будет включать предложение where вообще, в противном случае предложение where будет включать только фильтр по id.

Смежные вопросы