2010-08-10 32 views
6

tôi có một danh sách như vậy:Làm thế nào để tìm kiếm một danh sách trong C#

List<string[]> countryList 

và mỗi phần tử của mảng chuỗi là một mảng với 3 yếu tố.

Vì vậy countryList[0] có thể chứa các mảng:

new string[3] { "GB", "United Kingdom", "United Kingdom" }; 

Làm thế nào tôi có thể tìm kiếm countryList cho một mảng cụ thể ví dụ làm thế nào để tìm kiếm countryList cho

new string[3] { "GB", "United Kingdom", "United Kingdom" }? 

Trả lời

10
return countryList.FirstOrDefault(array => array.SequenceEqual(arrayToCompare)); 

Để đơn giản thiết lập sự tồn tại, sử dụng countryList.Any. Để tìm chỉ mục của phần tử hoặc -1 nếu nó không tồn tại, hãy sử dụng countryList.FindIndex.

+0

Tôi thiếu một cái gì đó như tôi không có một phương pháp FirstOrDefault trên đối tượng Danh sách của tôi, tôi có một Tìm và FindAll. Và tôi không có một SequenceEqual. Tôi đang sử dụng .NET 3.5 – Bob

+0

ah, tôi không có system.linq được nhập ... up! – Bob

1
// this returns the index for the matched array, if no suitable array found, return -1 

public static intFindIndex(List<string[]> allString, string[] string) 
{ 
    return allString.FindIndex(pt=>IsStringEqual(pt, string)); 
} 


private static bool IsStringEqual(string[] str1, string[] str2) 
{ 
    if(str1.Length!=str2.Length) 
     return false; 
    // do element by element comparison here 
    for(int i=0; i< str1.Length; i++) 
    { 
     if(str1[i]!=str2[i]) 
     return false; 
    } 
    return true; 
} 
+0

Sai ... Bằng phương pháp so sánh các tham chiếu không phải là giá trị bên trong của mảng, do đó, nó sẽ không bao giờ tìm thấy bất cứ điều gì. –

+0

! LukaszW.pl, tôi đã cập nhật câu trả lời – Graviton

+0

Bây giờ nó tốt hơn;) –

Các vấn đề liên quan