2015-06-12 6 views
0

У меня есть 15 столбцов на моей странице просмотра, например. Имя ссылки, форма, цвет, вес, цена и т. Д.Условно уточнить запрос базы данных на основе ненулевых фильтров

Я получаю все эти данные для уточнения базы данных, если пользователь не выбирает форму, тогда она не использует форму для уточнения, независимо от того, какой пользователь выбирает для уточнения, только те, быть в запросе.

Мой код, чтобы получить данных-

[HttpPost] 
public ActionResult ParametricSearch(List<string> SourceId, List<string> ShapeId, int[] Weights, List<string> ColorId) 
{ 
    ...some code is here.... 
} 

Моя проблема в том, когда пользователь не выбирает «форма», то она равна нулю, и я не хочу, чтобы добавить его в запросе, чтобы уточнить, выбрать только элементы должны быть в запрос. Как я могу написать запрос, чтобы уточнить всю базу данных, используя эти поля

ответ

1

Вы можете связать Where предложения, используя LINQ to Entities. Что-то в этих строках:

[HttpPost] 
public ActionResult ParametricSearch(List<string> SourceId, List<string> ShapeId, int[] Weights, List<string> ColorId) 
{ 
    var query = yourDataContext.YourEntityName; 

    if (SourceId != null && SourceId.Count > 0) 
    { 
     query = query.Where(x => SourceId.Contains(x)); 
    } 

    if (ShapeId!= null && ShapeId.Count > 0) 
    { 
     query = query.Where(x => ShapeId.Contains(x)); 
    } 

    if (ColorId!= null && ColorId.Count > 0) 
    { 
     query = query.Where(x => ColorId.Contains(x)); 
    } 

    var result = query.Take(50).ToList(); 
    return View(result); 
} 
+0

У меня есть 15-16 полей, тогда я должен проверить его 15-16 раз, когда он слишком длинный. Могу ли я написать его в одном запросе – Satyawan

+0

@Satyawan, я не вижу прямого способа сделать это в одном запросе. –

+0

Я не хочу брать всю запись в базу данных, я хочу получить только топ-50 записей, которые уточняются по запросу – Satyawan

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