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

时间:2013-10-24 04:37:14

标签: c# linq list sorting casting

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

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

MyList中的项目

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它通过标记它给我错误排序顺序
是否有任何方式我从字符串 - &gt;转换标记列的类型小数

2 个答案:

答案 0 :(得分:1)

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

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();

答案 1 :(得分:0)

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

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