TheDeveloperBlog.com

Home | Contact Us

C-Sharp | Java | Python | Swift | GO | WPF | Ruby | Scala | F# | JavaScript | SQL | PHP | Angular | HTML

<< Back to C-SHARP

C# List Contains Method

Use the Contains method on the List type. Contains tells us whether a value exists.
Contains. This method scans a List. It searches for a specific element to see if that element occurs at least once in the collection.ListList Find, Exists
Contains is a useful method that declaratively searches. To use Contains, no for-loop is required. You can type (and maintain) less code.
First example. We add System.Collections.Generic at the top. The example in the program shows the Contains extension being used on the List type with a case-insensitive search.

Var: A string List is constructed. Three string literal references are added to the collection's internal arrays through the Add method.

VarString LiteralList Add

Ordinal: StringComparer.OrdinalIgnoreCase implements the IEqualityComparer interface. This allows an insensitive string search.

IEqualityComparer

Returns: Contains returns a bool value type. We can store its result in a bool. We can use the Contains method as an expression.

Bool
C# program that uses List Contains method using System; using System.Collections.Generic; using System.Linq; class Program { static void Main() { // Create List with three elements. var list = new List<string>(); list.Add("cat"); list.Add("dog"); list.Add("moth"); // Search for this element. if (list.Contains("dog")) { Console.WriteLine("dog was found"); } // Search for this element in any string case. // ... This is the LINQ method with the same name. if (list.Contains("MOTH", StringComparer.OrdinalIgnoreCase)) { Console.WriteLine("MOTH was found (insensitive)"); } // This element is not found. Console.WriteLine(list.Contains("fish")); } } Output dog was found MOTH was found (insensitive) False
Benchmark. We benchmark the performance of List Contains and a custom for-loop on a small List. Only a few elements are searched by each method.Benchmark

Version 1: This version of the code uses a for-loop to test each element in the List, exiting early if a match is found.

Version 2: This version uses the Contains method on the List, which reduces the amount of code needed.

Result: A custom for-loop was faster. Typically writing a for-loop that does a search is faster than using a built-in method.

C# program that benchmarks List Contains using System; using System.Collections.Generic; using System.Diagnostics; class Program { /// <summary> /// Custom implementation. /// </summary> static bool ContainsLoop(List<string> list, string value) { for (int i = 0; i < list.Count; i++) { if (list[i] == value) { return true; } } return false; } const int _max = 100000000; static void Main() { List<string> list = new List<string>(); list.Add("one"); list.Add("two"); list.Add("three"); list.Add("four"); list.Add("five"); var s1 = Stopwatch.StartNew(); // Version 1: use loop to search a list. for (int i = 0; i < _max; i++) { bool f = ContainsLoop(list, "four"); } s1.Stop(); var s2 = Stopwatch.StartNew(); // Version 2: use Contains method. for (int i = 0; i < _max; i++) { bool f = list.Contains("four"); } s2.Stop(); Console.WriteLine(((double)(s1.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.WriteLine(((double)(s2.Elapsed.TotalMilliseconds * 1000000) / _max).ToString("0.00 ns")); Console.Read(); } } Output 19.22 ns For-loop, string comparisons [ContainsLoop] 54.60 ns Contains method [Contains]
Discussion. System.Linq is included by default in new Console applications in Visual Studio. It will allow you to call a separate Contains generic method on all IEnumerable types.Contains

Warning: LINQ extension methods are often slower. They operate on the IEnumerable interface.

IEnumerable

Parameters: The LINQ Contains method accepts 2 parameters (it accepts an IEqualityComparer).

Internals. Contains performs a linear search through the elements, starting with the first element, and uses Equals to check each element value.

Info: This is often much slower than a Dictionary. The LINQ method also does a linear search.

A summary. We used the Contains method on List. We saw how this method differs from the LINQ Contains method. The methods are implemented with a forward linear search.
© TheDeveloperBlog.com
The Dev Codes

Related Links:


Related Links

Adjectives Ado Ai Android Angular Antonyms Apache Articles Asp Autocad Automata Aws Azure Basic Binary Bitcoin Blockchain C Cassandra Change Coa Computer Control Cpp Create Creating C-Sharp Cyber Daa Data Dbms Deletion Devops Difference Discrete Es6 Ethical Examples Features Firebase Flutter Fs Git Go Hbase History Hive Hiveql How Html Idioms Insertion Installing Ios Java Joomla Js Kafka Kali Laravel Logical Machine Matlab Matrix Mongodb Mysql One Opencv Oracle Ordering Os Pandas Php Pig Pl Postgresql Powershell Prepositions Program Python React Ruby Scala Selecting Selenium Sentence Seo Sharepoint Software Spellings Spotting Spring Sql Sqlite Sqoop Svn Swift Synonyms Talend Testng Types Uml Unity Vbnet Verbal Webdriver What Wpf