2011-05-19 27 views
6

我有一個從數據庫導入記錄的ArrayList。 是否有任何方法來檢查arrayList是否包含schname,我想匹配另一個列表是api?檢查包含特定字符串的數組列表的方法

List<PrimaryClass> primaryList = new List<PrimaryClass>(e.Result); 
PrimaryClass sc = new PrimaryClass(); 
foreach (string item in str) 
{ 
    for (int a = 0; a <= e.Result.Count - 1; a++) 
    { 
     string schname = e.Result.ElementAt(a).PrimarySchool; 
     string tophonour = e.Result.ElementAt(a).TopHonour; 
     string cca = e.Result.ElementAt(a).Cca; 
     string topstudent = e.Result.ElementAt(a).TopStudent; 
     string topaggregate = e.Result.ElementAt(a).TopAggregate; 
     string topimage = e.Result.ElementAt(a).TopImage;   
     if (item.Contains(schname)) 
     { 
     } 
    } 
} 

這是我到目前爲止所提出的,善意糾正我可能犯下的任何錯誤。謝謝。

+4

我希望你*實際上*有一個'List '如果它是Silverlight的 - 我認爲它不支持非泛型集合。請編輯您的問題以清除此問題,以及列表中的* actual *類型的數據。 – 2011-05-19 06:34:58

+0

如果您想獲得高質量的答案,您應該添加更多信息和代碼示例。 – 2011-05-19 06:47:36

+0

使用通用集合(現在是2011年,現在有一半!),它會幫助你很多 – abatishchev 2011-05-19 06:47:46

回答

5

試試這個

foreach(string row in arrayList){ 
    if(row.contains(searchString)){ 
     //put your code here. 
    } 
} 
2
// check all types 
var containsAnyMatch = arrayList.Cast<object>().Any(arg => arg.ToString() == searchText); 

// check strings only 
var containsStringMatch = arrayList.OfType<string>().Any(arg => arg == searchText); 
+0

Silvelight是否完全支持這樣的LINQ? – abatishchev 2011-05-19 06:46:34

+0

@abatishchev - 是的,它的確如此 – 2011-05-19 06:50:21

4

好了,現在你已經表明,它實際上是一個List<T>,應該很容易使用LINQ:

if (primaryList.Any(x => item.Contains(x.PrimarySchool)) 

請注意,你真的應該考慮使用foreach而不是for循環遍歷列表,除非你絕對需要索引...如果你正在處理一個列表,使用索引器比調用ElementAt簡單。

+0

你會在哪裏把schname放在這裏,如果這就是我想要使用的字段 – GJJ 2011-05-19 09:49:02

+0

@GJJ:據我所見,'schname'不是'PrimaryClass'屬性鍵入...你正在從'PrimarySchool'屬性初始化*局部變量*(不是字段)'schname',這就是我使用它的原因。 – 2011-05-19 09:52:26

相關問題