对于 C# 中每个语句中的 for 语句
本文关键字:语句 for 对于 | 更新日期: 2023-09-27 18:36:48
怎么了?基本上想提取表"服务"中每行中的每个代码如果它等于特定文本,则使用匹配文本设置每个相应的行。
foreach (DataRow code in dsAuthors.Tables["Service"].Rows)
{
for (int i = 0; i < dsAuthors.Tables[1].Rows.Count; i++)
{
if (code[1].ToString() == "01")
{
Shipment.Rows[i][0] = "Service 1";
}
else if (code[1].ToString() == "02")
{
Shipment.Rows[i][0] = "Service 2";
}
else if (code[1].ToString() == "03")
{
Shipment.Rows[i][0] = "Service 3";
}
}
}
它只是用服务 1 填充所有行,但我不希望它这样做。
抱歉,并不意味着两个表相同,我相信我已经更新了代码以使其更准确。
你在同一件事上循环两次,然后将一个值戳到无限的货件行中。它看起来不是很安全,并且鉴于您正在通过foreach内的整个集合循环和设置货件行,这意味着最后一个值将决定所有货件行的内容。
在调试器中查看它,您将看到当您点击服务 2 值时,所有货件行都将在循环中设置为 2,依此类推。
您正在迭代行列表两次。您正在从外部循环中从变量读取数据,并从内部循环写入索引。它将"Service 1"写入所有行,因为最后一行是"01",内部循环将其写入所有行。
试试这个:
var Service = dsAuthors.Tables["Service"];
for (int i = 0; i < Service.Rows.Count; i++)
{
if (Service.Rows[i][1].ToString() == "01")
{
Shipment.Rows[i][0] = "Service 1";
}
else if (Service.Rows[i][1].ToString() == "02")
{
Shipment.Rows[i][0] = "Service 2";
}
}