2016-03-27 2 views
2
public JsonResult GetThis(string typ1) 
{  
    ThisContext tpc = new ThisContext(); 
    IQueryable<ThisDB> oDataQuery = tpc.ThisDBs; 
    if (typ1 != null) 
    { 
     oDataQuery = oDataQuery.Where(a => a.Type == typ1); 
     var result = oDataQuery.ToList(); 
     return Json(result, JsonRequestBehavior.AllowGet); 
    } 
    else return null; 
} 

Идея здесь заключается в том, чтобы создать базовый метод get, который выбирает все строки с «хорошим» типом, это не что иное, как метод веб-API.Динамические запросы LINQ для веб-интерфейса

Проблема в том, что я не понимаю, почему мой код не работает, он фактически ничего не возвращает (база данных не пуста, и если я запрашиваю ее без параметра, она работает плавно).

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

Благодарим вас за внимание!

+0

Что такое ThisDB и ThisContext? – derloopkat

+0

Я использую Entity Framework 6, поэтому thisContext - это мой dbcontext, ThisDB - это модель, ThisDBs - это ICollection of ThisDB. –

+0

Вы сказали, что если вы «запросите его без параметра, он работает плавно». Вы говорите, что если вы пропустите строку 'oDataQuery = oDataQuery.Where (a => a.Type == type1);', вы получите список всех записей в таблице? – Lex

ответ

0

Первая вещь, вы должны быть определения возможности для контекста базы данных, так как это одноразовые. (Хотя это не будет влиять на результирующий набор, но это хорошая практика)

using(ThisContext tpc = new ThisContext()) 
{ 
     //Your code goes here. 
} 

Следующая вещь, вы должны использовать

string.IsNullOrEmpty() 
//or 
string.IsNullOrWhiteSpaces() 
Метод

доступен для проверки того, является ли строка пустой или может содержать содержимое в виде пробелов или пустой строки.

public JsonResult GetThis(string typ1) 
{  
    using(ThisContext tpc = new ThisContext()) 
    { 
     IQueryable<ThisDB> oDataQuery = tpc.ThisDBs; 
     if (!string.IsNullOrWhiteSpace(typ1)) 
     { 
      oDataQuery = oDataQuery.Where(a => a.Type == typ1); 
      var result = oDataQuery.ToList(); 
      return Json(result, JsonRequestBehavior.AllowGet); 
     } 
     else return null; 
    } 
} 
Смежные вопросы