gpt4 book ai didi

c# - 按货币值(value)排序列表

转载 作者:太空宇宙 更新时间:2023-11-03 15:42:54 24 4
gpt4 key购买 nike

我一直在尝试想出一种巧妙的方法来在 Linq 中对我的列表进行排序,但没有取得太大成功。

我有课

public class SafeFloatDenomination
{
public string Denomination { get; set; }
public decimal Value { get; set; }
}

我从数据库中填充这个类,应该有一个List。然后我想做的是按面额按以下方式对列表进行排序:

[£50, 50p, £20, 20p, £10, 10p, £5, 5p, £2, 2p, £1, 1p]

我一直在绞尽脑汁,到目前为止我设法开始工作的唯一方法是一个相当乏味的方法,即依次获取我想要的值并将其添加到新列表中

  var l = this._bankingManager.GetSafeFloatCash().OrderByDescending(x => x.Denomination);

List<SafeFloatDenomination> orderedDenoms = new List<SafeFloatDenomination>();
SafeFloatDenomination itemToAdd = null;

itemToAdd = l.SingleOrDefault(x=>x.Denomination=="£50");
if ( itemToAdd!=null)
{
orderedDenoms.Add(itemToAdd);
}

itemToAdd = l.SingleOrDefault(x => x.Denomination == "50p");
if (itemToAdd != null)
{
orderedDenoms.Add(itemToAdd);
}

itemToAdd = l.SingleOrDefault(x => x.Denomination == "£20");
if (itemToAdd != null)
{
orderedDenoms.Add(itemToAdd);
}

itemToAdd = l.SingleOrDefault(x => x.Denomination == "20p");
if (itemToAdd != null)
{
orderedDenoms.Add(itemToAdd);
}

我更愿意做的是去除 £/p 和 order desc,但这也可以很容易地成为 Euro/c 或 $/c

我认为最好的开始方式是创建单独的 £ 和 p 列表,但是从每个列表中选择匹配值并不简单:

        var poundList = l.Where(x => x.Denomination.Substring(0,1) == "£");
var penceList = l.Where(x => x.Denomination.Substring(0,1) != "£");
// then add into a new list

最佳答案

Regex r = new Regex(@"(\d+)");

list.OrderByDescending(x => int.Parse(r.Match(x.Denomination).Groups[1].Value))
.ThenBy(x => x.Denomination);

关于c# - 按货币值(value)排序列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29493296/

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