2

switch ステートメントで for ループを使用したいのですが、「for each ステートメントは 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;
               }
}

さて、あなたのフィードバックに基づいてコードを更新していますが、最後の質問があります。データ コレクションにカテゴリという列があり、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

4 に答える 4

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;
    }
}
于 2013-10-27T15:47:22.123 に答える
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 ステートメントで文字列を使用しています。

于 2013-10-27T16:12:58.903 に答える
0

tempの代わりにswitch(v)....

また、一時変数は 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;
           }
}
于 2013-10-27T15:46:44.847 に答える