2012-07-19 194 views

回答

15

通過使用FindIndex和一點lambda。

var ar = new[] { "hi", "Hello" }; 
var ix = Array.FindIndex(ar, p => p.Equals("hello", StringComparison.CurrentCultureIgnoreCase)); 
+0

謝謝,它的工作原理。 :) – user1437001 2012-07-19 08:18:46

1

使用一個IComparer<string>類:

public class CaseInsensitiveComp: IComparer<string> 
{  
    private CaseInsensitiveComparer _comp = new CaseInsensitiveComparer(); 
    public int Compare(string x, string y) 
    { 
     return _comp.Compare(x, y); 
    } 
} 

然後在執行BinarySearch的排序陣列:

var myKeys = new List<string>(){"boot", "FOOT", "rOOt"}; 
IComparer<string> comp = new CaseInsensitiveComp(); 

myKeys.Sort(comp); 

int theIndex = myKeys.BinarySearch("foot", comp); 

一般上更大的陣列,優選靜態最有效的。