Database 如何使用ObjectQuery(Of T)类检查db条目是否包含某些内容
我正在使用新的mvc4 ajax控制器模板,我不知道如何将搜索添加到他们拥有的数据库查询中 假设我有一个名为Article的模型,下面是控制器默认包含的内容:Database 如何使用ObjectQuery(Of T)类检查db条目是否包含某些内容,database,asp.net-mvc-4,Database,Asp.net Mvc 4,我正在使用新的mvc4 ajax控制器模板,我不知道如何将搜索添加到他们拥有的数据库查询中 假设我有一个名为Article的模型,下面是控制器默认包含的内容: ObjectQuery<Article> articles = (db as IObjectContextAdapter).ObjectContext.CreateObjectSet<Article>(); articles = articles.OrderBy("it." + orderBy + (desc ?
ObjectQuery<Article> articles = (db as IObjectContextAdapter).ObjectContext.CreateObjectSet<Article>();
articles = articles.OrderBy("it." + orderBy + (desc ? " desc" : ""));
显然,新的方法更简洁,所以我想坚持这一点。我尝试将它们组合在一起,使用linq查询填充var项目,但无法使用order by part、.OrderBy(“it.+OrderBy+(desc?:”)命令)
所以我的问题是什么是最好的方式来搜索我的数据库?这到底是什么。OrderBy(“it.”+OrderBy+(desc?“desc”:“))在做什么?我只熟悉使用OrderBy和linq
编辑
经过大量的阅读,我对正在发生的事情有了更好的理解,尽管我仍然无法让它发挥作用
据我所知,我似乎需要类似的东西:
articles = articles.Where("it.Title = @searchString");
尽管我认为这只有在searchString与标题完全匹配的情况下才有效。虽然我仍然不太明白它在做什么,但我认为它使用sql表达式,因此我认为这可能会起作用:
articles = articles.Where("it.Title like '%@searchString%'");
但这一切都不起作用,我只是在黑暗中拍摄,因为我不熟悉这一点 在不更改mvc4模板代码的情况下查询模型最简洁的方法是创建IQueryable对象并进行查询,如下所示:
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":
...
}
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));
ObjectQuery articles=(数据库作为IOObjectContextAdapter).ObjectContext.CreateObjectSet();
articles=articles.OrderBy(“it.+OrderBy+((bool)desc?“desc”:”);
可计量物品=物品;
如果(!String.IsNullOrEmpty(搜索))
iArticles=iArticles.Where(a=>a.Title.Contains)(搜索)||
a、 FullArticle.Contains(搜索));
AppendHeader(“X-Total-Row-Count”,iArticles.Count().ToString());
返回PartialView(iArticles.Skip(start).Take((int)itemsPerPage));
这将保持条目的正确顺序,并确保返回新条目而不是旧条目