C# 在DataRow上循环以比较当前行数据和以前的行数据
我需要在gridview中迭代一个DataRow,以比较当前行和前一行的值。如果有人能在这个问题上提供帮助,我将不胜感激。我是新来的 我目前正在这样迭代,但我不知道如何继续: //检查当前行活动=LOAD_A和上一行活动=LOAD_B是否为真,然后存储 值并进行求和计算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")
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,我只想检查列[“活动”]的第一行和列[“活动”]的最后一行以获取它们的日期。如果您能在这个问题上提供帮助,我将不胜感激。谢谢