C# Array.Find ExamplesUse the Array.Find and Array.FindLast methods. Search arrays with lambda Predicates.
Array.Find. This C# method searches an array (with declarative syntax). We specify a Predicate type instance to determine what logic the search uses.
Finding notes. Array.Find allows us to use a for-loop without having to maintain loop indexes. It eases maintenance. We can also use FindLast and FindIndex.
List Find, Exists
Find example. This program shows how the Array.Find static method can be used on the Array type. This is a static method. It is found in the abstract base class for all array types.
Parameters The first parameter is an array reference. The second is a Predicate that receives an element and returns true or false.
Main We use Array.Find and FindAll to perform searches on the array. The second argument to Find and FindAll is a Predicate instance.
Lambda The "=>" token separates the parameter list from the expression that returns true or false based on those arguments.
But If nothing is found, Array.Find and Array.FindAll return the default value (null or zero).
C# program that uses Array.Find static method
using System; class Program { static void Main() { // // Use this array of string references. // string[] array1 = { "cat", "dog", "carrot", "bird" }; // // Find first element starting with substring. // string value1 = Array.Find(array1, element => element.StartsWith("car", StringComparison.Ordinal)); // // Find first element of three characters length. // string value2 = Array.Find(array1, element => element.Length == 3); // // Find all elements not greater than four letters long. // string[] array2 = Array.FindAll(array1, element => element.Length <= 4); Console.WriteLine(value1); Console.WriteLine(value2); Console.WriteLine(string.Join(",", array2)); } }
carrot cat cat,dog,bird
FindLast example. FindLast does the same thing as Find but searches from the final element. It proceeds backwards, searching each preceding element in order.
Here This example program returns a string element in the string array. It searches for the last string that is 3 characters long.
C# program that uses Array.FindLast
using System; class Program { static void Main() { string[] array = { "dot", "net", "perls" }; // Find last string of length 3. string result = Array.FindLast(array, s => s.Length == 3); Console.WriteLine(result); } }
FindIndex example. Imperative searching of arrays is fast. But sometimes, a declarative method call to locate an index is useful. FindIndex and FindLastIndex are helpful.
Arguments The first argument is the array. The second argument is a lambda expression, which fits the requirement of a predicate.
Note If the right-side expression evaluates to true, the element matches. And its index is returned.
Info The lambda expressions are used to locate elements with a value of 6. This makes sense for a short example program.
Finally FindIndex searches from the start—it returns an index of 1. FindLastIndex goes in reverse—it returns an index of 3.
C# program that uses Array.FindIndex method
using System; class Program { static void Main() { // Use this input array. int[] array = { 5, 6, 7, 6 }; // Use FindIndex method with predicate. int index1 = Array.FindIndex(array, item => item == 6); // Use LastFindIndex method with predicate. int index2 = Array.FindLastIndex(array, item => item == 6); // Write results. Console.WriteLine("{0} = {1}", index1, array[index1]); Console.WriteLine("{0} = {1}", index2, array[index2]); } }
1 = 6 3 = 6
Internals. Find does a forward linear search with a for-loop and tests each element with the Predicate. FindAll uses the List type and simply adds each match to this internal list variable.
Notes, predicate. The Predicate type is a generic type that encapsulates a method that must return a Boolean. We usually use the lambda syntax—but we can use an anonymous function.
A summary. We used Array.Find and Array.FindAll, which return a matching value or array when they succeed. These methods are static. They can be used with arrays of any element type.
© 2007-2021 sam allen.
see site info on the changelog.