更改DataTable中的列,其中字符串等于数字

时间:2015-04-16 06:30:51

标签: c# datatable

在DataTable中,我有一个字符串列Salenumber。 我想删除介于1到100之间的数字并将其设置为""。

我不能使用这样的IF语句,但这就是我想要做的。

if (row["Salenumber"].ToString() >= 1 && row["Salenumber"].ToString() <= 100) 
    row.SetField("Salenumber", "");

我无法将列更改为int。也许如果有办法将其更改为int remove 1 - 100然后将其更改回来。

有没有好办法呢?

2 个答案:

答案 0 :(得分:1)

您不需要将列更改为int,只需将单元格值转换为int以在if语句中使用

if (int.Parse(row["Salenumber"].ToString()) >= 1 && int.Parse(row["Salenumber"].ToString()) <= 100) 
       row.SetField("Salenumber", "");

答案 1 :(得分:1)

试试这个:

double RowDoubleValue;
foreach(DataRow row in YourDataTable) 
{
    if(Double.TryParse(row["Salenumber"].ToString(), out RowDoubleValue) && RowDoubleValue >= 1.0 && RowDoubleValue <= 100.0) 
    {
      row["Salenumber"] = "";
    }
}

另一种选择是将条件封装到评论中建议的Boas Enkler方法中:

foreach(DataRow row in YourDataTable) 
{
    if(IsANumberWithinRange(row["Salenumber"].ToString(), 1.0, 100.0)) 
    {
      row["Salenumber"] = "";
    }
}

private bool IsANumberWithinRange(string InputString, double MinValue, double MaxValue) 
{
    double Value;
    return (Double.TryParse(InputString, out RowIntValue) && RowIntValue >= MinValue && RowIntValue <= MaxValue)
}

注意:我已经从int更改为double,因为这是一个字符串列,它可能包含任何类型的数字。