私はasp.net mvcサイトを持っており、モデルに必要なときに計算されるフィールドをソートすることができません。データベース内に格納されていないフィールドでソートする方法
private decimal _total = -1;
public decimal Total
{
get
{
if (_total < 0)
{
_total = get_total(TableId);
}
return _total;
}
}
private decimal get_total(int id)
{
....Many Calcs
}
私は合計でソートしようとしているが、私はエラーを取得:
追加情報:指定されたタイプのメンバーの合計を「エンティティへのLINQでサポートされていません。初期化子、エンティティメンバー、エンティティナビゲーションプロパティのみがサポートされています。
は、ここに私のActionLinkのです:
@Html.ActionLink("By Total", "Index", new { sortOrder = ViewBag.Total, currentFilter = ViewBag.CurrentFilter }, new { @class = "btn btn-danger" })
私はいくつかの同様の問題を発見したが、私はどれだけこれでソートするかを把握することはできません。
そして私のコントローラ。私はこれを明確にするために編集しようとしました。
public ActionResult Index(string sortOrder)
{
ViewBag.CurrentSort = sortOrder;
ViewBag.Total = sortOrder == "total" ? "total_desc" : "total";
var records = from u in db.Records.Include(t => t.User).Where(t => t.Active == true)
select u;
switch (sortOrder)
{
case "total":
records = db.Records.OrderBy(u => u.Total).Where(t => t.Active == true);
break;
case "rating_desc":
records = db.Records.OrderByDescending(u => u.Total).Where(t => t.Active == true);
break;
default:
records = db.Records.OrderBy(u => u.Title).Where(t => t.Active == true);
break;
}
return View(records.ToList());
}
は、データを並べ替えるクエリを表示します。 –
実際にソートした場所、またはこの 'Total'プロパティを追加した場所のコードは表示されません。物事の見た目からは、部分クラスを介してEFエンティティに追加したと思います。 –
ごめんなさい –