1

在这个项目中有两个 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));              
}
4

2 回答 2

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();
于 2013-03-05T09:21:33.657 回答
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();
于 2013-03-05T09:20:12.777 回答