web-dev-qa-db-fra.com

Obtenir la valeur de la ligne en c # datatable

j'ai un problème avec mon code.

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;          
    }

mais j'ai besoin de xATmax et yATmax la valeur de la prochaine ligne ... Quelqu'un peut m'aider?

9
subprime

N'utilisez pas un foreach alors. Utilisez une boucle for. Votre code est un peu foiré mais vous pourriez faire quelque chose comme ...

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

Notez que vous devrez prendre en compte lors de la dernière ligne, il n'y aura pas de "i + 1", vous devrez donc utiliser une instruction if pour attraper cela.

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

Dans la boucle, vous pouvez maintenant référencer la ligne i + 1 (en supposant qu'il existe un i + 1)

4
John Saunders

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

si vous voulez contourner le problème + 1

0
Justin