我想在循环语句中使用for循环,但是得到这个错误:“对于每个语句都不能对int类型的变量进行操作”
DataRow row = MyData.Rows[0];
int temp = Convert.ToInt32(row["Category"]);
foreach (int v in temp)
{
switch (temp)
{
case "1":
lblCategory.Text = temp + " - Complete.";
break;
case "2":
lblCategory.Text = temp + " - Not Complete";
break;
}
}
好吧,我正在根据您的反馈更新我的代码,但有最后一个问题,我的数据集中有一个名为Category的列,它有1,2,3等值,所以这就是为什么我的意思是当我说的情况“1”:
var temp = MyData.Rows;
foreach (int v in temp)
{
switch (v.Category)
{
case "1":
lblCategory.Text += v + " - Complete.\n";
break;
case "2":
lblCategory.Text += v + " - Not Complete\n";
break;
}
}
答案 0 :(得分:6)
您需要有一组行来循环。你为一个元素写了一个循环。
要使以下行生效:
foreach (int v in temp) ...
您的temp
变量必须是整数集合(例如IEnumerable<int>
或List<int>
或int[]
)。
尝试写作:
var temp = MyData.Rows;
而不是
DataRow row = MyData.Rows[0];
int temp = Convert.ToInt32(row["Category"]);
在foreach
循环之前,如下所示:
var temp = MyData.Rows;
foreach (int v in temp)
{
switch (v)
{
case 1:
lblCategory.Text += v + " - Complete.\n";
break;
case 2:
lblCategory.Text += v + " - Not Complete\n";
break;
}
}
答案 1 :(得分:1)
foreach语句为每个语句重复一组嵌入式语句 数组中的元素或实现的数组 System.Collections.IEnumerable或 System.Collections.Generic.IEnumerable接口。 foreach statement用于迭代集合以获取 你想要的信息..
但是在您的代码中temp
是int
,Int32
没有实现IEnumerable
或IEnumerable<T>
,它根本不是集合,所以..
答案 2 :(得分:1)
您可以使用:
foreach (DataRow row in MyData.Rows)
{
int v = Convert.ToInt32(row["Category"]);
switch (v)
{
case 1:
lblCategory.Text += v + " - Complete.\n";
break;
case 2:
lblCategory.Text += v + " - Not Complete\n";
break;
}
}
在您的代码示例中,您正在迭代集合中的项目,但是要切换集合本身。您还要将项目转换为Int32
,但在case语句中使用字符串。
答案 3 :(得分:0)
切换(v)而不是临时....
也 你的temp变量必须是int
的集合DataRow row = MyData.Rows[0];
int temp = Convert.ToInt32(row["Category"]);
foreach (int v in temp)
{
switch (v)
{
case 1:
lblCategory.Text = temp + " - Complete.";
break;
case 2:
lblCategory.Text = temp + " - Not Complete";
break;
}
}