1

このプロジェクトには 2 つの SQL テーブルがあります。最初のテーブルは Cars で、2 番目のテーブルは Mobiles です。これら 2 つのテーブルにはそれぞれ ExpirationDate フィールドがあります。有効期限に基づいて、これら 2 つのテーブルの最後の 10 フィールドを 1 つのビューに表示したいと考えています。

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

これら 2 つのクエリをリファクタリングして、同じクラスを返すようにする必要があります。

次に、2 つの IQueryable セットを結合し、結合された 3 番目の結果セットに対して 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 ConcatおよびToListメソッドを使用できます。

        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 に答える