2012-08-26 27 views
0

我有兩個數組,我需要顯示array1具有哪個array2,反之亦然。除了()給兩個數組輸出錯誤?

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

輸出:

momo 

我現在用的。除,並試圖顯示一個消息框的輸出,但是當我執行我的代碼的輸出是這樣的:

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)); 
+0

您已經遇到'object.ToString()'實現,它只返回類型的全名。你從'除外'想要什麼?很多人都驚訝地發現它是基於設置的 - 所以像順序和重複的東西在輸出中沒有任何區別。 – devgeezer

回答

5

Yo你應該將它轉換爲字符串 - 否則,它是一個可枚舉的,並且ToString不會產生預期的結果。

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

編輯同樣的問題也存在於這一行:

string a = Convert.ToString(testAnswer); 

你應該

string a = String.Join(", ", testAnswer); // << You can use a different separator 
+2

同樣的問題也存在於例如'string a = Convert.ToString(testAnswer);'。 'string.Join'也是解決這些問題的方法。 C#中的數組沒有非常豐富的'.ToString()'方法(這就是'Convert.ToString'和''「+ something')。 –

1

a.Except(b)取代它的​​類型爲IEnumerable<string>MessageBox.Show()接受string

所以,你需要轉換器前兩個第二,例如: -

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

將用逗號每個元素分開。