C# 将字符串类型列表转换为十进制类型列表
我的列表中有一个C# 将字符串类型列表转换为十进制类型列表,c#,linq,list,sorting,casting,C#,Linq,List,Sorting,Casting,我的列表中有一个列表 其中MyClass说明为 public class MyClass { public Nullable<decimal> Id { get; set; } public string Marks { get; set; } public string rank { get; set; } } 这里,Marks的类型是String,因此,如果我尝试Sort/OrderByIt by Marks,它
列表
其中
MyClass
说明为
public class MyClass
{
public Nullable<decimal> Id { get; set; }
public string Marks { get; set; }
public string rank { get; set; }
}
这里,Mark
s的类型是String
,因此,如果我尝试Sort/OrderBy
It by Marks,它会给我错误的排序顺序是否有任何方法可以将标记列的类型从字符串-->十进制转换为您必须准备另一个具有适当属性类型的类:
public class MyClass2
{
public Nullable<decimal> Id { get; set; }
public decimal Marks { get; set; }
public string rank { get; set; }
}
也可以在不更改属性的情况下进行排序:
var orderedList = source.OrderBy(x => decimal.Parse(x.Marks)).ToList();
将mark的属性更改为decimal
public class MyClass
{
public Nullable<decimal> Id { get; set; }
public decimal Marks { get; set; }
public string rank { get; set; }
}
公共类MyClass
{
公共可空Id{get;set;}
公共小数点{get;set;}
公共字符串秩{get;set;}
}
我意识到这很糟糕(可能有一些我没有想到的极端情况)。。但是您也可以“从技术上”这样做:var newList=list.OrderBy(x=>x.Marks.Length),然后by(x=>x.Marks)
。它按字符串的长度排序。。然后根据它们的价值。不过,我并不真的推荐它。。但是我想我会把它放在那里。谢谢你宝贵的回答@SimonWhitehead这是一个很好的解决方案旁注:Id
asdecimal
?这是非常奇怪和不寻常的。你真的期望像3.14
那样的Id
?这只是一个例子@AlexeiLevenkov顺便说一句,我会记住的time@SimonWhitehead虽然你的解决方案是非常可观的,但它包括一个缺点,正如我提到的,我想把我的列从字符串转换为十进制,所以如果标记的形式是25.75,你的解决方案失败
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; }
}