Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/259.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 在DataRow上循环以比较当前行数据和以前的行数据_C#_Arrays_For Loop_If Statement_Datarow - Fatal编程技术网

C# 在DataRow上循环以比较当前行数据和以前的行数据

C# 在DataRow上循环以比较当前行数据和以前的行数据,c#,arrays,for-loop,if-statement,datarow,C#,Arrays,For Loop,If Statement,Datarow,我需要在gridview中迭代一个DataRow,以比较当前行和前一行的值。如果有人能在这个问题上提供帮助,我将不胜感激。我是新来的 我目前正在这样迭代,但我不知道如何继续: //检查当前行活动=LOAD_A和上一行活动=LOAD_B是否为真,然后存储 值并进行求和计算 foreach (DataRow sda in dt.Rows) { if (sda.Field<string>("ACTIVITY") == "LOAD_A")

我需要在gridview中迭代一个DataRow,以比较当前行和前一行的值。如果有人能在这个问题上提供帮助,我将不胜感激。我是新来的

我目前正在这样迭代,但我不知道如何继续:

//检查当前行活动=LOAD_A和上一行活动=LOAD_B是否为真,然后存储 值并进行求和计算

foreach (DataRow sda in dt.Rows)
 {

   if (sda.Field<string>("ACTIVITY") == "LOAD_A")
    {
  
    }
}
foreach(数据行中的sda)
{
如果(sda.字段(“活动”)=“加载”)
{
}
}

正如devNull已经提到的,您可以使用一个变量来保存
foreach
循环的上一次迭代的值

这可能是这样的:

DataRow previousDr = null;
foreach (DataRow sda in dt.Rows)
{
    if (previousDr != null)
    {
        if (sda.Field<string>("ACTIVITY") == "LOAD_A" &&
            previousDr.Field<string>("ACTIVITY") == "LOAD_B")
        {
            //Store value und do calculation.
        }
    }
    previousDr = sda;
}
DataRow-previousDr=null;
foreach(数据行sda在dt.行中)
{
if(previousDr!=null)
{
如果(sda.字段(“活动”)=“加载”&&
上一个灾难恢复字段(“活动”)=“加载”
{
//存储值并进行计算。
}
}
previousDr=sda;
}

正如devNull已经提到的,您可以使用一个变量来保存
foreach
循环的上一次迭代的值

这可能是这样的:

DataRow previousDr = null;
foreach (DataRow sda in dt.Rows)
{
    if (previousDr != null)
    {
        if (sda.Field<string>("ACTIVITY") == "LOAD_A" &&
            previousDr.Field<string>("ACTIVITY") == "LOAD_B")
        {
            //Store value und do calculation.
        }
    }
    previousDr = sda;
}
DataRow-previousDr=null;
foreach(数据行sda在dt.行中)
{
if(previousDr!=null)
{
如果(sda.字段(“活动”)=“加载”&&
上一个灾难恢复字段(“活动”)=“加载”
{
//存储值并进行计算。
}
}
previousDr=sda;
}

您可以使用
for
语句和DataRow的indexer属性来完成此操作

DataColumn column = table.Columns["ACTIVITY"];
for (int index = 1; index < table.Rows.Count; ++index)
{
    if (table.Rows[index - 1].Field<string>(column) == "LOAD_B" && // previous row
        table.Rows[index].Field<string>(column) == "LOAD_A")       // current row
    {
        // do somthing
    }
}
DataColumn column=table.Columns[“活动”];
for(int index=1;index
您可以使用
for
语句和DataRow的indexer属性来完成此操作

DataColumn column = table.Columns["ACTIVITY"];
for (int index = 1; index < table.Rows.Count; ++index)
{
    if (table.Rows[index - 1].Field<string>(column) == "LOAD_B" && // previous row
        table.Rows[index].Field<string>(column) == "LOAD_A")       // current row
    {
        // do somthing
    }
}
DataColumn column=table.Columns[“活动”];
for(int index=1;index
MoreLINQ的
Lag
Lead
()是我建议您开始的地方。您可以将字段存储在
foreach
之外的变量中,然后在后续迭代中将其作为“previous”值访问吗?您好,我将字段移到foreach之外,但它遇到了错误。抱歉,我是c#的新手。MoreLINQ的
Lag
Lead
()是我建议您开始的地方。您可以将字段存储在
foreach
之外的变量中,然后在后续迭代中将其作为“previous”值访问吗?嗨,devnull,我将字段移到foreach之外,但它遇到了错误。对不起,我是c#的新手。您好@Dmirtry,需要您在这个问题上的帮助。我有一个gridview,我只想检查列[“活动”]的第一行和列[“活动”]的最后一行以获取它们的日期。如果您能在这个问题上提供帮助,我将不胜感激。thansk.Hi@Dmirtry,在这个问题上需要你的帮助。我有一个gridview,我只想检查列[“活动”]的第一行和列[“活动”]的最后一行以获取它们的日期。如果您能在这个问题上提供帮助,我将不胜感激。坦斯克,你好,奥利弗,在这个问题上需要你的帮助。我有一个gridview,我只想检查列[“活动”]的第一行和列[“活动”]的最后一行以获取它们的日期。如果您能在这个问题上提供帮助,我将不胜感激。谢谢。你好,奥利弗,在这个问题上需要你的帮助。我有一个gridview,我只想检查列[“活动”]的第一行和列[“活动”]的最后一行以获取它们的日期。如果您能在这个问题上提供帮助,我将不胜感激。谢谢