Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/database/9.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Database 如何使用ObjectQuery(Of T)类检查db条目是否包含某些内容_Database_Asp.net Mvc 4 - Fatal编程技术网

Database 如何使用ObjectQuery(Of T)类检查db条目是否包含某些内容

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 ?

我正在使用新的mvc4 ajax控制器模板,我不知道如何将搜索添加到他们拥有的数据库查询中

假设我有一个名为Article的模型,下面是控制器默认包含的内容:

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));
这将保持条目的正确顺序,并确保返回新条目而不是旧条目