控制台应用程序C#中的System.FormatException输入字符串格式不正确?

控制台应用程序C#中的System.FormatException输入字符串格式不正确?,c#,datatable,type-conversion,console-application,tryparse,C#,Datatable,Type Conversion,Console Application,Tryparse,当行[colname]=“NULL”和“ABC”的值有任何方法可以避免时,我得到了错误我甚至尝试解析,但我遇到了一个错误,无法将对象转换为行[colname]中的字符串(对代码进行了注释) mscorlib.dll中发生类型为“System.FormatException”的未处理异常 foreach (DataRow row in csvData.Rows) { //var Result = double.TryParse(row[co

行[colname]=“NULL”和“ABC”的值有任何方法可以避免时,我得到了错误
我甚至尝试解析,但我遇到了一个错误,无法将对象转换为行[colname]中的字符串(对代码进行了注释)

mscorlib.dll中发生类型为“System.FormatException”的未处理异常

foreach (DataRow row in csvData.Rows)
            {
                //var Result = double.TryParse(row[colname], out myDec);

                if (Convert.ToDouble(row[colname]) >= med1 && Convert.ToDouble(row[colname]) <= med2)
                {
                    al.Add(Convert.ToDouble(row[colname]));
                    //Console.WriteLine("value greater than 20 % median= {0}", Convert.ToDouble(row["Data Value"]));
                }
foreach(csvData.Rows中的DataRow行)
{
//var Result=double.TryParse(行[colname],out myDec);
如果(Convert.ToDouble(row[colname])>=med1和&Convert.ToDouble(row[colname])一个简单的问题:为什么对行
var Result=double.TryParse(row[colname],out myDec);
进行注释?这是正确的方法。您得到该异常是因为
Convert.to()
未能转换
row[colname]中的值
,当
double.TryParse()
担任该角色时,您可以检查转换状态的返回值,并使用out变量中的out值;代码如下:

foreach (DataRow row in csvData.Rows)
{
    double myDec;

    if (row[colname] != null && double.TryParse(row[colname].Tostring(), out myDec))
    {
        if (myDec >= med1 && myDec <= med2)
        {
            al.Add(myDec);                      
        }
    }
}
foreach(csvData.Rows中的DataRow行)
{
双myDec;
if(行[colname]!=null&&double.TryParse(行[colname].Tostring(),out myDec))
{

如果(myDec>=med1&&myDec由于您试图将“NULL”和“ABC”转换为双精度类型而出现问题,则根本不可能。请尝试以下方法:

double myDec;
foreach (DataRow row in csvData.Rows)
{
      double.TryParse(row[colname]?.ToString(), out myDec)
      if (myDec >= med1 && myDec <= med2)
      {
           al.Add(myDec);
      }
double myDec;
foreach(csvData.Rows中的DataRow行)
{
double.TryParse(行[colname]?.ToString(),out myDec)

如果(myDec>=med1&&myDec仍然获取错误无法将对象转换为字符串”行[colname]@nikhiljain:检查我帖子中的更新,将if更改为:
if(行[colname]!=null&&double.TryParse(行[colname].Tostring(),out myDec))
获取错误无法将对象转换为字符串”行[colname]@nikhiljain我更新了它!我添加了行[colname].ToString()@nikhiljain你试过我的答案了吗应该有用now@nikhiljain我更新了我的问题。我将
行[colname].ToString()
更改为
行[colname]?.ToString()
以避免出现
NullReferenceException
。您必须始终假设文件包含错误文本,因此始终支持TryParse()因此,您可以生成一条适当的错误消息。如果列包含“ABC”或“NULL”,则当然不可能正确转换。请与编写生成文件的代码的人联系,以便解决此问题。您在此处找不到他。