形成SQL查询并将结果传递给视图
我有这个看法-形成SQL查询并将结果传递给视图,sql,asp.net-mvc,entity-framework,Sql,Asp.net Mvc,Entity Framework,我有这个看法- public ActionResult Index() { var db = new ApplicationDbContext(); var auctions = db.Auctions.ToArray(); return View(auctions); } 正确返回数据库中所有拍卖的数组。但我只想返回最受欢迎的。我想这样做: public ActionResult Index() {
public ActionResult Index()
{
var db = new ApplicationDbContext();
var auctions = db.Auctions.ToArray();
return View(auctions);
}
正确返回数据库中所有拍卖的数组。但我只想返回最受欢迎的。我想这样做:
public ActionResult Index()
{
var db = new ApplicationDbContext();
var auctions = db.Auctions.getMostPopular.ToArray();
return View(auctions);
}
其中getMostPopular()是我的模型中包含所有拍卖的一个方法,目前看起来是这样的:
public static List<Auction> getMostPopular()
{
var query = "SELECT* FROM AUCTIONS WHERE EndTime > CONVERT(date, GETDATE()) ORDER BY viewCount DESC;" }
}
publicstaticlist getMostPopular()
{
var query=“SELECT*FROM AUCTIONS WHERE EndTime>CONVERT(date,GETDATE())ORDER BY viewCount DESC;”}
}
那么如何正确编写这个getMostPopular()方法呢?
这是将其写入模型的正确路径吗?或者我应该在控制器索引操作中写入查询,如果是这样,那会是什么样子?正确是相对的。您建议的SQL语句似乎可以做到这一点。按照ViewCount desc对结果进行排序似乎是实现方法get most populary的主要部分。如果您已经考虑了日期过滤器,您还可以考虑通过VIEWTUNE DESC从表顺序中选择TOP 10 *的顶部子句,仅考虑固定数量的最受欢迎的项。p> 为什么不尝试使用
var auctions=getMostPopular().ToArray()
并更改getMostPopular
方法以使用LINQ(lambda)而不是像这样的原始SQL语句:var query=db.Auctions.Where(x=>x.EndTime>DateTime.Today).OrderByDescending(x=>x.viewCount.ToList()代码>?