将字符串类型的列表转换为十进制类型列表

本文关键字:列表 类型 十进制 转换 字符串 | 更新日期: 2023-09-27 18:36:50

我有一个List<MyClass> MyList
MyClass描述在哪里

 public class MyClass
    {
        public Nullable<decimal> Id { get; set; }
        public string Marks { get; set; }
        public string rank { get; set; }
    }

"我的列表"中的项目

Id  Marks Rank
1   100   null
2   15    null
3   5     null
4   55    null
5   51    null
6   12    null
7   32    null

这里的Mark类型是String因此,如果我尝试通过标记Sort/OrderBy它,它会给我错误的排序顺序
有什么方法可以将标记列的类型从字符串转换为十进制>

将字符串类型的列表转换为十进制类型列表

您必须准备另一个具有正确属性类型的类:

public class MyClass2
{
    public Nullable<decimal> Id { get; set; }
    public decimal Marks { get; set; }
    public string rank { get; set; }
}

然后,可以使用 LINQ 将一个列表转换为另一个列表:

var newList = source.Select(x => new MyClass2
                                 {
                                     Id = x.Id,
                                     Marks = decimal.Parse(x.Marks),
                                     rank = x.rank
                                 }).ToList();

或者,您可以在不更改属性的情况下进行排序:

var orderedList = source.OrderBy(x => decimal.Parse(x.Marks)).ToList();

将标记的属性更改为十进制

public class MyClass
{
    public Nullable<decimal> Id { get; set; }
    public decimal Marks { get; set; }
    public string rank { get; set; }
}