コレクションの注文に使用するデリゲートを作成したいと思います。
switch(vm.OrderBy){
case "Title":
vm.Albums = _albumRepo.Get(a => a.Title);
break;
case "Artist":
vm.Albums = _albumRepo.Get(a => a.Artist.Name);
break;
case "Price":
vm.Albums = _albumRepo.Get(a => a.Price);
break;
私のリポジトリの方法は次のとおりです。
public IEnumerable<Album> Get(Func<Album, string> orderingDelegate = null)
{
IEnumerable<Album> albums;
if (orderingDelegate == null)
albums = _context.Albums.OrderBy(a => a.Title);
else
albums = _context.Albums.OrderBy(orderingDelegate);
return albums;
}
そのため、Get() メソッドにa を渡しますFunc<Album, string>
。これは、順序付けプロパティが String 型である限り問題ありません。ただし、価格は小数であるため、これはコンパイルされません。
_albumRepo.Get(a => a.Price);
小数で注文できるようにするためだけに、別の Get メソッドを作成する必要がありますか?
public IEnumerable<Album> Get(Func<Album, decimal> orderingDelegate = null){ }
または、これを行うより良い方法はありますか?
ありがとう!
クリス