2009-06-21 69 views
7

我的代碼存在問題。在Datatable中獲取行的值c#

foreach (DataRow dr in dt_pattern.Rows) 
    { 
     part = dr["patternString"].ToString(); 
     if (part != vpart) 
     { 
     System.Console.WriteLine(part); 
     System.Console.WriteLine("Geben Sie bitte für den Abschnitt die AT ein: "); 
     temp = System.Console.ReadLine(); 
     AT = ToDouble(temp); 
     dr["AT"] = AT; 

     double xATmax = ToDouble(dr["Ampl"].ToString()); 
     double x = ToDouble(dr["Time"].ToString()); 

     double yATmax = ToDouble(dr["Ampl"]+1.ToString()) + AT; 
     double y = ToDouble(dr["Ampl"].ToString()); 

     dr["alphaATmin"] = Gradient(x,xATmax,y,yATmax); 
     System.Console.WriteLine(dr["alphaATmin"]); 
     } 
     vpart = part;   
    } 

但我需要在xATmax和yATmax下一行的值...有人可以幫助我嗎?

回答

20

那麼不要使用foreach。使用'for循環'。您的代碼是有點搞砸了,但你可以做這樣的事情......

for (Int32 i = 0; i < dt_pattern.Rows.Count; i++) 
{ 
    double yATmax = ToDouble(dt_pattern.Rows[i+1]["Ampl"].ToString()) + AT; 
} 

注意你必須要考慮到最後一行時不會有「我+ 1」,所以你將不得不使用一個if語句來解決這個問題。

4
for (int i=0; i<dt_pattern.Rows.Count; i++) 
{ 
    DataRow dr = dt_pattern.Rows[i]; 
} 

在循環中,你現在可以參考行i + 1(假設是i + 1)

相關問題