控制台应用程序C#中的System.FormatException输入字符串格式不正确?
当行[colname]=“NULL”和“ABC”的值有任何方法可以避免时,我得到了错误控制台应用程序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]中的字符串(对代码进行了注释) 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”,则当然不可能正确转换。请与编写生成文件的代码的人联系,以便解决此问题。您在此处找不到他。