Asp.net mvc 排序最新新闻MVC
我试着根据它的“发布”日期对一些东西进行分类,其中四个最新的是唯一应该看到的 我是通过MVC和SQL数据库表来实现这一点的,但由于某些原因,它没有按应有的方式工作,而是显示了整个列表: 数据库类:Asp.net mvc 排序最新新闻MVC,asp.net-mvc,foreach,sql-order-by,Asp.net Mvc,Foreach,Sql Order By,我试着根据它的“发布”日期对一些东西进行分类,其中四个最新的是唯一应该看到的 我是通过MVC和SQL数据库表来实现这一点的,但由于某些原因,它没有按应有的方式工作,而是显示了整个列表: 数据库类: public class tblVidstedu { public int Id { get; set; } public string Overskrift { get; set; } public string Tekst { get; set; } public
public class tblVidstedu
{
public int Id { get; set; }
public string Overskrift { get; set; }
public string Tekst { get; set; }
public DateTime Dato { get; set; }
}
数据上下文:
public DbSet<DataBases.DataBaseClasses.tblVidstedu> Vidstedu { get; set; }
public DbSet-Vidstedu{get;set;}
家庭控制器:
public ActionResult VidsteDu()
{
var ViewModel = new Prøveeksamen.Models.InformationModel();
// skal skrives på alle viewmodels
ViewModel.Kontakt = db.Kontakt.ToList();
List<tblKontakt> Kontakt = new List<tblKontakt>();
ViewModel.Vidstedu = db.Vidstedu.ToList();
List<tblVidstedu> Vidsteduliste = new List<tblVidstedu>();
// !!!!!!!!! This is the part that i have problems with !!!!!!!!!!! //
Vidsteduliste = db.Vidstedu.OrderByDescending(v => v.Dato).Take(4).FirstOrDefault;
return View(ViewModel);
}
public ActionResult VidsteDu()
{
var ViewModel=new Prøveeksamen.Models.InformationModel();
//skal skrives påalle视图模型
ViewModel.Kontakt=db.Kontakt.ToList();
List Kontakt=新列表();
ViewModel.Vidstedu=db.Vidstedu.ToList();
List Vidsteduliste=新列表();
//!!!!!!!!!!!!!这是我有问题的部分//
Vidsteduliste=db.Vidstedu.OrderByDescending(v=>v.Dato).Take(4).FirstOrDefault;
返回视图(ViewModel);
}
作为第一个问题,我们需要检查此行中的查询顺序:
Vidsteduliste = db.Vidstedu.OrderByDescending(v => v.Dato).Take(4).FirstOrDefault();
ViewModel.Vidstedu = db.Vidstedu.ToList(); // returns all records from 'Vidstedu'
OrderByDescending
基于Dato
属性Take
从已排序的记录中选择前4条记录FirstOrDefault
从剩余的4条记录中获取第一项,并在结果集中返回一条记录(而不是您想要的4条记录)return
语句没有设置为returnVidsteduliste
:
return View(ViewModel);
以前ViewModel
分配此行时:
Vidsteduliste = db.Vidstedu.OrderByDescending(v => v.Dato).Take(4).FirstOrDefault();
ViewModel.Vidstedu = db.Vidstedu.ToList(); // returns all records from 'Vidstedu'
由于您希望显示按最近的Dato
值排序的前四条记录,只需删除所有不必要的列表实例化,如list Vidsteduliste=new list()代码>并直接从控制器操作返回这些记录:
ViewModel.Vidstedu = db.Vidstedu.OrderByDescending(v => v.Dato).Take(4).ToList();
return View(ViewModel);
然后您可以使用foreach
循环在查看页面上显示存储在Vidstedu
列表中的记录