我怎样才能仅根据日期将最后10个字段返回到视图?

时间:2013-03-05 09:10:42

标签: c# entity-framework

在这个项目中有两个sql表。第一个表是Cars,第二个表是Mobiles。这两个表都有一个ExpirationDate字段。我想在一个视图中根据到期日期显示这两个表中的最后10个字段。

public ActionResult Index(int ?page)
{
      var result = db.Mercedes.Where(m => m.Username == User.Identity.Name).OrderByDescending(m=>m.CurrentDate);
      var result2 = db.Mobiles.Where(m => m.UserName == User.Identity.Name).OrderByDescending(m => m.CurrentDate);
      int pageSize = 6;
      int pageNumber = (page ?? 1);

      return View(result.ToPagedList(pageNumber, pageSize));              
}

2 个答案:

答案 0 :(得分:1)

您需要做的是重构这两个查询以返回同一个类。

然后组合两个IQueryable集并在第三个组合结果集上执行Take(10)。

示例:

var result = from m in db.Mercedes 
             where m.Username == User.Identity.Name  
             orderby m.CurrentDate descending 
             select new car(){param1 = m.param1/*etc*/};
var result2 = from m in db.Mobiles 
              where m.Username == User.Identity.Name  
              orderby m.CurrentDate descending 
              select new car(){param1 = m.param1/*etc*/};
var combinelist = result.Concat(result2)
.OrderByDescending(m=>m.CurrentDate)
.Take(10)
.ToList();

答案 1 :(得分:0)

您可以使用LINQ ConcatToList方法:

        var result = db.Mercedes.Where(m => m.Username == User.Identity.Name).OrderByDescending(m=>m.CurrentDate);
        var result2 = db.Mobiles.Where(m => m.UserName == User.Identity.Name).OrderByDescending(m => m.CurrentDate);

        var combinelist= result.Concat(result2).ToList();