Я использую новый шаблон контроллера mvc4 ajax, и я не знаю, как добавить поиск в запрос к базе данных, который у них есть.
Допустим, у меня есть модель с именем Article, вот чтоКонтроллер содержит по умолчанию:
ObjectQuery<Article> articles = (db as IObjectContextAdapter).ObjectContext.CreateObjectSet<Article>();
articles = articles.OrderBy("it." + orderBy + (desc ? " desc" : ""));
Это работает нормально, но я не знаком с IObjectContextAdapter, и я не знаю, как добавить поиск (т. е. чтобы увидеть, если статья содержит термин.) ОбычноУ меня было бы что-то вроде этого:
var articles = from a in db.Articles.ToList()
select a;
if(!String.IsNullOrEmpty(search))
{
articles = articles.Where(a => a.Title.ToLower().Contains(search.ToLower())
|| a.FullArticle.ToLower().Contains(search.ToLower())
|| a.TagsAndKeywords.ToLower().Contains(search.ToLower()));
}
switch(orderBy)
{
case "TimeStamp":
if(desc)
articles = articles.OrderByDescending(a => a.TimeStamp);
else
articles = articles.OrderBy(a => a.TimeStamp);
break;
case "Title":
...
}
Очевидно, что новый способ сделать это более лаконичен, поэтому я хотел бы придерживаться этого.Я попытался объединить их, используя запрос linq для заполнения статей var, но тогда я не могу использовать порядок по частям .OrderBy ("it." + OrderBy + (desc? "Desc": "")).
Итак, мой вопрос, каков наилучший способ поиска по моей базе данных?И что именно делает этот .OrderBy ("it." + OrderBy + (desc? "Desc": ""))?Я только знаком с использованием OrderBy с linq.
Edit
После долгого чтения я лучше понимаю, что происходит, хотя я все еще могуЭто не работает.
Согласно this кажется, что мне нужно что-то похожее на это:
articles = articles.Where("it.Title = @searchString");
, хотя я думаю, что это будет работать, только если searchStringточно соответствует названию.Хотя я все еще не совсем понимаю, что это делает, я думаю, что он использует выражения SQL, поэтому я подумал, что это может сработать:
articles = articles.Where("it.Title like '%@searchString%'");
Но ничего из этого не сработало, и я стреляю только в темнотетак как я незнаком с этим.