我有一个Datagridview(dataGridView1),数据源是一个列表(Bets)。我想按列值Ascending(odd1)订购。我怎么能这样做?
编辑:也许我应该在填写datagridview之前订购列表?有什么建议吗?
EDIT2:我得到了解决方案,但数字进展错误。检查图片:
在1.99之后,我希望得到2.57的2.00 instea。我怎么能这样做?
EDIT3:这是我班上的一部分:
public string odd1 { 得到{return(Odds.Count> = 3)?赔率[0]:"错误&#34 ;; } set {if(Odds.Count> = 3)赔率[0] =值; } }
public string oddX
{
get { return (Odds.Count >= 3) ? Odds[1] : "error"; }
set { if (Odds.Count >= 3) Odds[1] = value; }
}
public string odd2
{
get { return (Odds.Count >= 3) ? Odds[2] : "error"; }
set { if (Odds.Count >= 3) Odds[2] = value; }
}
答案 0 :(得分:2)
您可以在设置gridView的数据源之前简单地使用Linq:
编辑:由于odd1的类型是字符串,因此您需要将其转换为数字才能获得所需的结果。由于并非所有数字都有效,因此您需要进行一些检查以获得所需的结果。
list = list.OrderBy(x=> ConvertFromString(x.odd1)).ToList();
定义一个方法:
private decimal ConvertFromString(string str)
{
decimal val = decimal.MaxValue;
if (decimal.TryParse(str, out val))
return val;
else
return decimal.MaxValue;
}
或在不创建新列表的情况下进行就地排序:
list.Sort((x, y) => (int)(Decimal.Parse(x.odd1) - Decimal.Parse(y.odd1)));