2011-11-02 47 views
3

我讀的結果值的一些列表將其存儲在陣列中,但我不知道我要去的地方錯了,我不知道該數組的大小,所以我不能指定任何對它的價值我如何讀取字符串值,並使用數據讀取器

string[] result = null; 
while (reader.Read()) 
{ 
    result = Convert.ToString[](reader["RoleID"]); 
} 
reader.Close(); 

我得到:Syntax error; value expected

後,我得到的結果值,我怎麼能比較字符串的結果裏面的值?例如,我想檢查字符串check="Can send message";是否存在於結果數組中。我怎樣才能做到這一點?

+0

你沒有給予足夠的信息給任何人給你一個實際的答案。首先,你的語法錯了,你在遍歷閱讀器,試圖將每個值轉換爲結果數組?取決於你想要完成的事情,可能有更好的方法來做到這一點。 – Random

回答

3

您的代碼在語法上是錯誤的,因此錯誤。但是,當你要建立項目的集合,但你不知道事先大小,你想用一個List<T>,而不是一個數組。該列表將允許您繼續添加項目。

var results = new List<string>(); 
while (reader.Read()) 
{ 
    results.Add(reader["RoleID"].ToString()); 
} 

// results now holds all of the RoleID values in the reader 

您可以通過索引來訪問所述列表的元素,就像陣列,並且如果需要的話可以查詢使用LINQ的列表(也就像陣列)。

string check = "something"; 
if (results.Any(item => item.Equals(check))) 
{ 
    // results contains the value in check 
} 

// or use all items that equal check 
foreach (var item in results.Where(obj => obj.Equals(check)) 
{ 
    // do something with each item that equals check 
} 
+0

如何比較一個字符串,我想比較與一個字符串resutls check =「Something」 – John

+0

回答更新顯示使用Linq的各種查詢技術。 (可以通過顯式循環執行相同類型的邏輯。) –

1

我preffer使用ArrayList

var result= new ArrayList(); 
while (reader.Read()) 
     { 
      result.Add(Convert.ToString[](reader["RoleID"])); 
     }reader.Close(); 
+0

如果不綁定到.NET 1.x/C#1.x,那麼使用'ArrayList'幾乎沒有什麼理由。對於.NET/C#2.0或更高版本,「List 」是首選。 –

+0

我必須在這一個@huMpty duMpty身邊。雖然它可能不是最好的選擇,但確實更容易使用ArrayList(無論如何,從初學者的角度來看)。 –

0

你需要使用如下列表:

var results = new List<string>(); 
while(reader.Read()){ 
    results.Add(reader["RoleID"].ToString()); 
} 

,那麼你會遍歷集合中的所有字符串和使用foreach檢查他們聲明:

foreach(var result in results) { 
    if(result == "check") { 
     // do something 
    } 
} 
0

Anthony Pegram示例中的列表可以根據需要輕鬆轉換爲數組。

string[] result = results.ToArray();