0

私は2つの配列を持っていますが、array1にはあるものとarray2にはないものを表示する必要があります。その逆も同様です。

string[] a = { "hello", "momo" }
string[] b = { "hello"}

出力:

momo

.Exceptを使用して、出力をメッセージボックスに表示しようとしていますが、コードを実行すると、出力は次のようになります。

System.Linq.Enumerable+<ExceptIterator>d_99'1[System.Char]

私のコード:

//Array holding answers to test
string[] testAnswer = new string[20] { "B", "D", "A", "A", "C", "A", "B", "A", "C", "D", "B", "C", "D", "A", "D", "C", "C", "B", "D", "A" };
string a = Convert.ToString(testAnswer);

//Reads text file line by line. Stores in array, each line of the file is an element in the array
string[] inputAnswer = System.IO.File.ReadAllLines(@"C:\Users\Momo\Desktop\UNI\Software tech\test.txt");
string b = Convert.ToString(inputAnswer);

//Local variables
int index = 0;
Boolean arraysequal = true;

if (testAnswer.Length != inputAnswer.Length)
{
    arraysequal = false;
}

while (arraysequal && index < testAnswer.Length)
{
    if (testAnswer[index] != inputAnswer[index])
    {
        arraysequal = false;
    }
    index++;
}

MessageBox.Show("" + a.Except(b));
4

2 に答える 2

5

文字列に変換する必要があります。そうToStringしないと、列挙可能であり、期待される結果が得られません。

MessageBox.Show(string.Join(", ", a.Except(b)));

EDIT同じ問題がこの行に存在します:

string a = Convert.ToString(testAnswer);

あなたはそれを置き換える必要があります

string a = String.Join(", ", testAnswer); // << You can use a different separator
于 2012-08-26T13:24:30.103 に答える
1

a.Except(b)IEnumerable<string>while MessageBox.Show()acceptのタイプがありますstring

したがって、最初の 2 秒を変換する必要があります。

string output = String.Join(", ", input)`

各要素をコンマで区切ります。

于 2012-08-26T13:47:13.650 に答える