2013-06-30 15 views
0

我有以下代碼: 但我不能迴應寫在列表中的值用於調試目的...無法看到在C#中從列表中的值

public void LottoWinners(object sender, EventArgs e) 
    { 

     Dictionary<int, int> number = new Dictionary<int, int>(); 
     Random generator = new Random(); 
     while (number.Count < 6) 
     { 
      number[generator.Next(1, 49)] = 1; 
     } 

     int[] lotto = number.Keys.OrderBy(n => n).ToArray(); 

     List<int> lst = lotto.OfType<int>().ToList(); 


     StringBuilder builder = new StringBuilder(); 
     for (int i = 0; i < lst.Count; i++) // Loop through List with for 
     { 
      builder.Append(lst).Append("|"); // Append string to StringBuilder 
     } 
     string result = builder.ToString(); // Get string from StringBuilder 

     Response.Write(result); 

    } 

但我看到的是我的結果。我應該看到我的名單的價值!

System.Collections.Generic.List`1 

回答

3

這是當你正在呼籲List<T>ToString會發生什麼。在你的代碼,這是發生在這裏:

builder.Append(lst) 

所有你需要做的是用來替換:

builder.Append(lst[i]) 

順便說一句,你可以取代這個:

StringBuilder builder = new StringBuilder(); 
for (int i = 0; i < lst.Count; i++) // Loop through List with for 
{ 
    builder.Append(lst).Append("|"); // Append string to StringBuilder 
} 
string result = builder.ToString(); // Get string from StringBuilder 

與此:

string result = string.Join("|", lst) + "|"; 
+0

對於'Join()'+1。 – RichieHindle

+0

+1 ...它的工作..謝謝... – PriceCheaperton

+1

Downvoter關心評論請? – Zbigniew

5

您需要執行此操作:

builder.Append(lst[i]) 

獲取您嘗試訪問的列表元素。目前你只是追加整個列表,這是沒有意義的。

1

這裏要附加的列表對象:

builder.Append(lst) 

,而不是一個項目:

builder.Append(lst[i]) 

除此之外,你的代碼似乎罰款

1

builder.append(lst)被追加的名單,其中內部呼叫ToString()ToString()名單上返回

System.Collections.Generic.List`1

所以這是正確的行爲。你想要做的是使用索引器:

for (int i = 0; i < lst.Count; i++) // Loop through List with for 
     { 
      builder.Append(lst[i]).Append("|"); // Append string to StringBuilder 
     } 
相關問題