gpt4 book ai didi

c# - 对具有各种数据类型的委托(delegate)进行排序

转载 作者:太空宇宙 更新时间:2023-11-03 21:44:22 25 4
gpt4 key购买 nike

我想构建一个用于对集合进行排序的委托(delegate):

 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;
}

所以,我传递了一个 Func<Album, string>到我的 Get() 方法,只要排序属性是 String 类型,它就很好。但是,价格是小数,因此无法编译:

_albumRepo.Get(a => a.Price);

我是否需要创建另一个 Get 方法才能使用小数点进行订购?

public IEnumerable<Album> Get(Func<Album, decimal> orderingDelegate = null){ }

或者有更好的方法吗?

谢谢!

克里斯

最佳答案

你能把签名改成通用的吗?

public IEnumerable<Album> Get<T>(Func<Album, T> orderingDelegate = null)
{
IEnumerable<Album> albums;

if (orderingDelegate == null)
albums = _context.Albums.OrderBy(a => a.Title);
else
albums = _context.Albums.OrderBy(orderingDelegate);

return albums;
}

关于c# - 对具有各种数据类型的委托(delegate)进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17833665/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com