0

我有一个描述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

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

4

2 回答 2

2

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

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();
于 2013-10-24T04:39:44.930 回答
0

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

public class MyClass
{
    public Nullable<decimal> Id { get; set; }
    public decimal Marks { get; set; }
    public string rank { get; set; }
}
于 2013-10-24T04:41:37.013 回答