在 C# 数组中搜索

本文关键字:搜索 数组 | 更新日期: 2023-09-18 11:27:18

通常需要根据 C# 中的某些逻辑搜索array中的元素。使用 Array.Find()Array.FindAll()Array.FindLast() 方法搜索与指定条件匹配的元素。

Array.Find()

Array.Find() 方法使用谓词委托搜索与指定条件匹配的元素,并返回整个 Array 中的第一个匹配项。

语法:
public static T Find<T>(T[] array, Predicate<T> match);

根据语法,第一个参数是要搜索的一维数组,第二个参数是谓词 deligate,可以是lambda expression。 它返回满足谓词表达式定义的条件的第一个元素;否则,返回类型 T 的默认值。

下面的示例查找与字符串"Bill"匹配的第一个元素。

string[] names = { "Steve", "Bill", "Bill Gates", "Ravi", "Mohan", "Salman", "Boski" };
var stringToFind = "Bill";
 
var result = Array.Find(names, element => element == stringToFind); // returns "Bill"

下面的示例返回以"B"开头的第一个元素。

string[] names = { "Steve", "Bill", "Bill Gates", "James", "Mohan", "Salman", "Boski" };
 
var result = Array.Find(names, element => element.StartsWith("B")); // returns Bill

下面的示例返回长度为 5 或更大的第一个元素。

string[] names = { "Steve", "Bill", "James", "Mohan", "Salman", "Boski" };
var result = Array.Find(names, element => element.Length >= 5); // returns Steve

请注意,Array.Find() 方法仅返回第一个匹配项,而不是所有匹配元素。使用 Array.FindAll() 方法检索所有匹配的元素。

Array.FindAll()

Array.FindAll() 方法返回与指定条件匹配的所有元素。

语法:
public static T[] FindAll<T>(T[] array, Predicate<T> match)

根据语法,第一个参数是要搜索的一维数组,第二个参数是谓词 deligate,可以是lambda expression。 它返回满足谓词表达式定义的条件的所有元素。

下面的示例查找与"Bill"或"bill"匹配的所有元素。

string[] names = { "Steve", "Bill", "bill", "James", "Mohan", "Salman", "Boski" };
var stringToFind = "bill";
           
string[] result = Array.FindAll(names, element => element.ToLower() == stringToFind); // return Bill, bill

下面的示例查找以 B 开头的所有元素。

string[] names = { "Steve", "Bill", "James", "Mohan", "Salman", "Boski" };
string[]  result = Array.FindAll(names, element => element.StartsWith("B")); // return Bill, Boski

下面的示例查找长度为 5 或更大的所有元素。

string[] names = { "Steve", "Bill", "James", "Mohan", "Salman", "Boski" };
 
string[] result = Array.FindAll(names, element => element.Length >= 5); // returns Steve, James, Mohan, Salman, Boski 

Array.FindLast()

Array.Find() 方法返回与条件匹配的第一个元素。Array.FindLast() 方法返回与数组中指定条件匹配的最后一个元素。

语法:
public static T FindLast<T>(T[] array, Predicate<T> match)

根据语法,第一个参数是要搜索的一维数组,第二个参数是谓词 deligate,可以是lambda expression。 它返回满足谓词表达式定义的条件的最后一个元素。如果未找到,则返回类型 T 的默认值。

下面的示例查找与"Bill"匹配的最后一个元素。

string[] names = { "Steve", "Bill", "Bill Gates", "Ravi", "Mohan", "Salman", "Boski" };
var stringToFind = "Bill";
 
var result = Array.FindLast(names, element => element.Contains(stringToFind)); // returns "Boski"

下面的示例返回最后一个以"B"开头的元素。

string[] names = { "Steve", "Bill", "James", "Mohan", "Salman", "Boski" };
 
var result = Array.FindLast(names, element => element.StartsWith("B")); // returns Boski

下面的示例返回长度为 5 或更大的第一个元素。

string[] names = { "Steve", "Bill", "Bill Gates", "James", "Mohan", "Salman", "Boski" };
result = Array.FindLast(names, element => element.Length >= 5); // returns Boski

因此,请根据您的要求选择适当的方法,以在 C# 中的数组中搜索元素。


本文内容总结: