私のデータ モデルは 4 つのテーブルで構成されています: Item は、Product、Shipping、および User を参照しています。商品フィールドで商品を並べ替えたい: カテゴリと状態。私のアプリでは、LINQ To SQL クラスを使用しています。これが私のコードです:
public ViewResult Content(string category, string condition, int page = 1)
{
var Items = _itemsRepository.GetItems()
.Where(i => category == null && condition == null ||
(i.Product.Category != null && i.Product.Category == category) ||
(i.Product.Condition != null && i.Product.Condition == condition))
.OrderBy(i => i.ItemId)
.Skip((page - 1) * PageSize)
.Take(PageSize)
.Select(i => i);
// return Items to the view
}
この問題はルーティングによっても発生する可能性があるため、global.asax の内容は次のとおりです。
// without categories and conditions
routes.MapRoute(
null,
"Store/Content/Page{page}",
new { controller = "Store", action = "Content", category = (string)null, condition = (string)null },
new { page = @"\d+" });
// with conditions
routes.MapRoute(
null,
"Store/Content/{condition}/Page{page}",
new { controller = "Store", action = "Content", category = (string)null },
new { page = @"\d+" });
// with categories
routes.MapRoute(
null,
"Store/Content/{category}/Page{page}",
new { controller = "Store", action = "Content", condition = (string)null },
new { page = @"\d+" });
// Default route
routes.MapRoute(
null,
"{controller}/{action}",
new { controller = "Home", action = "Index"});
カテゴリ付きのルートを条件付きのルートの上に置くと、カテゴリごとに並べ替えることができ、その逆も可能です。カテゴリと条件で同時に並べ替えるにはどうすればよいですか? ありがとう。