2016-02-26 46 views
0

我正在创建一个web应用程序以将一个excel文件导入MS Dynamics Crm。这里是代码片段C#如果Else Inside For Loop没有工作

for (i = 0; i < dt.Rows.Count; i++) 
{ 
    if (dt.Rows[i][3].ToString() != String.Empty) 
    { 
     try 
     { 
      Entity contractline = new Entity("new_contractline"); 
      contractline["new_lineitem"] = dt.Rows[i][1].ToString(); 
      contractline["new_sublineitem"] = dt.Rows[i][3].ToString(); 

      createChildData = service.Create(contractline); 

      string guidString = createChildData.ToString(); 
      guidRecord[i] = guidString; 

     } 

     catch (Exception ex) 
     { 

     } 

    } 
    else if (dt.Rows[i][3].ToString() == string.Empty) /**THIS BLOK BELOW WON'T FIRE **/ 
    { 
     try 
     { 
      Entity contractline = new Entity("new_contractline"); 
       contractline["new_lineitem"] = dt.Rows[i][2].ToString(); 
       contractline["new_sublineitem"] = dt.Rows[i][3].ToString(); 
       contractline["new_quantity"] = "33"; 
      service.Create(contractline); 
     } 
     catch (Exception ex) 
     { 
     } 
    } 

的问题是,当dt.Rows[i][3]是空的else if块不火。可能是什么问题呢?

+0

在异常处理程序中添加Trace.Writeline以查看是否正在处理异常。 –

+0

是'dt.Rows [i] [3]'NULL'的值还是空字符串? – Steve

+0

@Steve:我不确定,在excel领域它是空的。所以,当我做这个'dt.Rows [我] [3] .ToString()'我想我得到一个空不是空。 –

回答

2

为什么不只是做else?如果你没有其他别的东西 - 如果。

if (dt.Rows[i][3].ToString() != String.Empty) 

如果.ToString()为空则会触发。但是,如果dt.Rows[i][3]为空,您将在此处获得例外,因为您无法在空对象上使用ToString()。如果您在此代码块之外尝试捕获,我建议您检查它,因为dt.Rows[i][3]可能为空,并且抛出异常。

如果您有任何其他别的,如果,你应该使用

else if (string.IsNullOrWhiteSpace(dt.Rows[i][3].ToString())) 

,改变你,如果块(其实我建议你这样做在任何情况下)

if (!string.IsNullOrWhiteSpace(dt.Rows[i][3].ToString())) 

原因是为并非所有的空间实际上都是空格键字符。您可能会得到其他white space characters,它不会触发您的String.Empty块,因为它不是空的。这将匹配您的手机可能拥有的许多空间。这也将捕获隐形的非空格空间。一个例子是相当于HTML代码&nbsp;(非破坏性空间),它实际上不是空格键空间(并且不会匹配“”),但会占用空间。

+0

谢谢,我知道问题不是来自其他问题。这是我的错误,因为没有在这条线上放置一个正确的值' contractline [“new_quantity”] =“33”;' –

0

如果只是使用......否则与string.IsNullOrEmpty(S)像下面....

if (string.IsNullOrEmpty(dt.Rows[i][3].ToString()) == true) 
{ 
    // True. 
    Console.WriteLine("Null or empty"); 
} 
else 
{ 
    Console.WriteLine("Not null and not empty"); 
} 
0

你有没有试过以下? else if(dt.Rows [i] [3] .ToString()。Trim()==“”)