使用c#在switch语句中使用for循环

时间:2013-10-27 15:43:24

标签: c# foreach switch-statement

我想在循环语句中使用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;
    }
}

4 个答案:

答案 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, in (C# Reference)

  

foreach语句为每个语句重复一组嵌入式语句   数组中的元素或实现的数组   System.Collections.IEnumerable或   System.Collections.Generic.IEnumerable接口。 foreach   statement用于迭代集合以获取   你想要的信息..

但是在您的代码中tempintInt32没有实现IEnumerableIEnumerable<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;
           }
}