我正在使用新的mvc4 ajax控制器模板,我不知道如何將搜索添加到數據庫查詢中。如何檢查數據庫條目是否包含使用ObjectQuery(Of T)的類
比方說,我有一個模型叫文章,這裏是控制器默認包含:
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」:「」))在做什麼?我只用linq的OrderBy來完成家庭功能。
編輯
大量的閱讀之後,我有一個更好的瞭解是怎麼回事,但我仍然不能得到這個工作的。
根據this好像我需要一些與此類似:
articles = articles.Where("it.Title = @searchString");
但我認爲,如果搜索字符串完全匹配的標題這隻會工作。雖然我還是不太明白這是什麼做的,我覺得它使用SQL表達式,所以我認爲這可能工作:
articles = articles.Where("it.Title like '%@searchString%'");
但這一切工作,而我只能在黑暗中,因爲我拍攝我不熟悉這一點。