2011-05-19 12 views
6

Mam ArrayList, który importuje rekordy z bazy danych. Czy istnieje metoda sprawdzania, czy arrayList zawiera schname, które chcę dopasować do innej listy, która jest api?Metoda sprawdzania listy tablic zawierającej określony ciąg

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)) 
     { 
     } 
    } 
} 

Oto, do czego do tej pory doszedłem, uprzejmie popraw wszystkie błędy, które mogłem popełnić. Dzięki.

+4

Spodziewam się, że * faktycznie * masz 'List ' jeśli to jest Silverlight - myślałem, że to nie obsługuje zbiorów niegenentycznych. Edytuj swoje pytanie, aby to wyjaśnić, wraz z * faktycznym * typem danych na liście. –

+0

Naprawdę powinieneś dodać więcej informacji i przykład kodu, jeśli chcesz uzyskać wysokiej jakości odpowiedzi. –

+0

Użyj generycznych kolekcji (jest to 2011 i połowa teraz!) I to ci bardzo pomoże – abatishchev

Odpowiedz

5

Spróbuj

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

Czy Silvelight w pełni obsługuje takie LINQ? – abatishchev

+0

@abatishchev - tak to robi –

4

Dobra, teraz już pokazały, że to faktycznie List<T>, to powinno być łatwe z LINQ:

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

Zauważ, że naprawdę należy rozważyć użycie foreach zamiast pętli for do iteracji na liście, chyba że zdecydowanie potrzebujesz indeksu ... i jeśli masz do czynienia z lista za pomocą indeksera jest prostsza niż wywołanie ElementAt.

+0

gdzie umieścisz schname w tym polu, które chciałbym użyć – GJJ

+0

@GJJ: Z tego co widzę, 'schname' nie jest własnością' PrimaryClass' type ... zainicjalizowałeś * zmienną lokalną * (nie pole) 'schname' z właściwości' PrimarySchool', dlatego użyłem tego. –

Powiązane problemy