使用数据源对Datagridview进行排序

时间:2016-07-31 16:24:22

标签: c# list datagridview

我有一个Datagridview(dataGridView1),数据源是一个列表(Bets)。我想按列值Ascending(odd1)订购。我怎么能这样做?

编辑:也许我应该在填写datagridview之前订购列表?有什么建议吗?

EDIT2:我得到了解决方案,但数字进展错误。检查图片:

enter image description here

在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; }
}

1 个答案:

答案 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)));