在 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# 中的数组中搜索元素。
本文内容总结: