新しいmvc4 ajaxコントローラテンプレートを使用していますが、データベースクエリに検索を追加する方法がわかりません。ObjectQuery(Of T)クラスを使用してdbエントリに何かが含まれているかどうかを確認する方法
のは、私はここに、条というモデルがあるとしましょう、コントローラがデフォルトで含まれているものです:
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( "それ" + orderBy +(desc? "desc": ""))やっている?私はlinqでOrderByを使うだけで家族性です。私はまだこれが仕事を得ることができないが、何が起こっているのより良い理解を持って読書をたくさんした後
編集
。私はsearchStringのは、まさにタイトルに一致した場合にのみ動作すると思いますが、
articles = articles.Where("it.Title = @searchString");
:私はこれに似た何かを必要とするよう
thisによると、それはそうです。
articles = articles.Where("it.Title like '%@searchString%'");
しかし、これのどれも働いていない、と私は私だけので、暗闇の中で撮影しています:私はまだかなりこれが何をしているかを理解していませんが、私はこれが動作していることを考えて、それは、SQL式を使用して考えますこれに慣れていない。
ObjectQuery<Article> articles = (db as IObjectContextAdapter).ObjectContext.CreateObjectSet<Article>();
articles = articles.OrderBy("it." + orderBy + ((bool)desc ? " desc" : ""));
IQueryable<Article> iArticles = articles;
if(!String.IsNullOrEmpty(search))
iArticles = iArticles.Where(a => a.Title.Contains(search) ||
a.FullArticle.Contains(search));
Response.AppendHeader("X-Total-Row-Count", iArticles.Count().ToString());
return PartialView(iArticles.Skip(start).Take((int)itemsPerPage));
この正しい順序でエントリを維持し、点を確認してください。