Asp.net mvc 排序最新新闻MVC

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

我试着根据它的“发布”日期对一些东西进行分类,其中四个最新的是唯一应该看到的

我是通过MVC和SQL数据库表来实现这一点的,但由于某些原因,它没有按应有的方式工作,而是显示了整个列表:

数据库类:

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
    语句没有设置为return
    Vidsteduliste

    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
    列表中的记录