使用c#在switch语句中使用forloop

moe*_*moe 2 c# foreach switch-statement

我想用switch语句来循环但是得到这个错误:"对于每个语句都不能对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;
               }
}
Run Code Online (Sandbox Code Playgroud)

好吧,我正在根据你的反馈更新我的代码,但有最后一个问题,我在我的数据集合中有一个名为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;
    }
}
Run Code Online (Sandbox Code Playgroud)

Igo*_*evo 6

您需要有一组行来循环.你为一个元素写了一个循环.

要使以下行工作:

foreach (int v in temp) ...
Run Code Online (Sandbox Code Playgroud)

您的temp变量必须是整数的集合(例如IEnumerable<int>List<int>int[]).

试着写:

var temp = MyData.Rows;
Run Code Online (Sandbox Code Playgroud)

代替

DataRow row = MyData.Rows[0];
int temp = Convert.ToInt32(row["Category"]);
Run Code Online (Sandbox Code Playgroud)

在你的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;
    }
}
Run Code Online (Sandbox Code Playgroud)