https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_b964594d3d957944241961017b9eb19bf02834de44cce93d8e67dd306852dbe346167181e455e33d5268ea01d973d77bb056848546f31794f31a4c31a9da5aa3.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_09f62869dbd00446535ebe8e270406331e6f0ae459deba58094caeadc22d58825ffc99f8c217b496ec112cbb1da8b662d77b0f52eae24cc5631f95695e40d87b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_e6b7e0bf68aa4a61d5c6a0065ec42e38a0cc53e39a4fbee057b72d4b2297b37c01e716e1e61bac7f240b5a0edbb178d37b62f7ed4ea4ea3d10e46dbe7429f326.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_bfff9e63e857e9ee612e292d4a6edf3ced64d6a756925c953a9d8f77845ff601eca64d73dfa48756b1a9f4a4d6de6127a273bcde16ddeb71a22383460f4e94b0.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f4dd7e1d73ae5eda35ed5ad6aa965b612dbf483ece3ca50c1e8e30ad8dff1c66a160ed75e958e2db399661d229874783e0834ad813a479437035666b8e9e3386.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_4fce0769137d4cd096989b0349bc3c2bbfca79ac311fdf714c41ab24d87551c7b49b756c8a8de090b0714a0ad0560e49fa532ba5a88875ea4afd78efac464df6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_85cec8b07d60426b11040e471babca0d2f9c8dc87a9b56e06cad39828f7f67179e29609100f282a574872c9a93fb635b25416300eb4c97bc5a653d00cf6f8dbf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_6768e5a27d4d357347338621c0d20bd269b126d30eec796193390f2f530fbaea60af84130c46f9786114be65149e661e87d55c339219c90aa76396d7e5b734ef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_2acd6bdff3b680341e8c727da5169a647123eb8fd0a90253161b4c3af272c15d293bf9bb217008bb13f84d1910b0e166798001f8603b6c026d5c20a76c41d47c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_be8c718db533d4788218ef14d91a8d5c769ccfd25886896a00f5ef15c01335f2e2fa8875150532d5557978b711611e26422e08df47ddfa9429ee60fe4666343a.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_268c9bba6ba649318f0da28c37b09a9bbfa371210f9b6b52faa7fd8ae94abf6b3c3bfeb5df5705c93495ce1152ca58aeabc435d6c6c1bd959025165c3f50e086.js
  • Skip to main content
  • Skip to primary sidebar
  • Skip to footer
  • Home
  • Featured
    • Advanced Python Topics
    • AWS Learning Roadmap
    • JWT Complete Guide
    • Git CheatSheet
  • Explore
    • Programming
    • Development
      • microservices
      • Front End
    • Database
    • DevOps
    • Productivity
    • Tutorial Series
      • C# LinQ Tutorials
      • PHP Tutorials
  • Dev Tools
    • JSON Formatter
    • Diff Checker
    • JWT Decoder
    • JWT Generator
    • Base64 Converter
    • Data Format Converter
    • QR Code Generator
    • Javascript Minifier
    • CSS Minifier
    • Text Analyzer
  • About
  • Contact
CodeSamplez.com

CodeSamplez.com

Programming And Development Resources

You are here: Home / Database / LINQ Like Operator: The Ultimate Guide in C#

LINQ Like Operator: The Ultimate Guide in C#

Updated May 8, 2025 by Rana Ahsan 3 Comments ⏰ 6 minutes

LinQ Like Operator in C#

If you’ve been working with databases in C#, you’ve probably hit that moment where you needed to perform search operations like you would with SQL’s LIKE operator. Trust me, I’ve been there countless times. The good news? LINQ absolutely crushes it when it comes to providing powerful alternatives to SQL’s LIKE functionality.

In this comprehensive guide, I’ll walk you through EVERYTHING you need to know about using LINQ Like operator in your C# applications. By the end, you’ll be implementing pattern-matching queries like a pro – guaranteed!

Learn LinQ more in-depth with the Comprehensive LinQ Tutorials Series

Understanding LINQ Like Operator Fundamentals

Before diving into code examples, let’s get one thing straight – LINQ to SQL isn’t just convenient, it’s revolutionary for database operations. When your database design is stable, LINQ handles all the heavy lifting to maintain consistency between data relations.

The beauty of LINQ is how it transforms complex SQL operations into simple method calls. The LIKE operator is no exception. While traditional SQL requires specific syntax like %keyword%, LINQ provides intuitive methods that make pattern matching a breeze.

String Matching Methods in LINQ: The Core Techniques

Let’s dive right into the practical implementations. Here are the three fundamental ways to perform LIKE operations in LINQ:

1. Checking for Keywords Anywhere in a String

When you need to find records where a keyword appears anywhere in the field (equivalent to SQL’s %keyword%), here’s the magic:

// Initialize your data context
var myDB = new MyDataContext();

// Get all users where username contains the keyword
List<Users> users = myDB.Users
    .Where(u => u.Username.Contains(keyword))
    .ToList();Code language: JavaScript (javascript)

This generates SQL equivalent to:

sqlSELECT * FROM Users WHERE Username LIKE '%keyword%'

Pure simplicity! No need to remember SQL syntax or worry about string formatting.

2. Checking for Keywords at the Beginning or End

Sometimes you need more specific pattern matching – like finding strings that start or end with specific text. LINQ makes this ridiculously simple:

// Match records where username starts with the keyword
List<Users> usersStartingWith = myDB.Users
    .Where(u => u.Username.StartsWith(keyword))
    .ToList();

// Match records where username ends with the keyword
List<Users> usersEndingWith = myDB.Users
    .Where(u => u.Username.EndsWith(keyword))
    .ToList();Code language: JavaScript (javascript)

These generate SQL equivalent to:

SELECT * FROM Users WHERE Username LIKE 'keyword%'
SELECT * FROM Users WHERE Username LIKE '%keyword'Code language: JavaScript (javascript)

LINQ Query Syntax: An Alternative Approach

If you prefer LINQ’s SQL-like query syntax over method chains, you’re covered! Here’s how to implement the same patterns:

// Check for keyword anywhere
List<Users> usersContaining = (from u in myDB.Users
                               where u.Username.Contains(keyword)
                               select u).ToList();

// Check for keyword at beginning
List<Users> usersStartingWith = (from u in myDB.Users
                                where u.Username.StartsWith(keyword)
                                select u).ToList();

// Check for keyword at end
List<Users> usersEndingWith = (from u in myDB.Users
                             where u.Username.EndsWith(keyword)
                             select u).ToList();Code language: JavaScript (javascript)

Both methods produce identical SQL queries, so it’s purely about which style matches your coding preferences.

Advanced Pattern Matching with SqlMethods.Like

While the string methods above handle most common scenarios, sometimes you need more advanced pattern-matching capabilities. That’s where the SqlMethods class comes in – it’s a game changer for complex patterns.

Located in the System.Data.Linq.SqlClient namespace, SqlMethods provides a Like method that brings the full power of SQL LIKE patterns to LINQ:

// Don't forget this important namespace
using System.Data.Linq.SqlClient;

// Then in your code:
List<Users> users = (from u in myDB.Users
                    where SqlMethods.Like(u.Username, "%" + keyword + "%")
                    select u).ToList();Code language: PHP (php)

The real advantage? You can use actual SQL LIKE patterns with special characters exactly like you would in raw SQL:

// Find usernames containing any digit
var usersWithNumbers = (from u in myDB.Users
                       where SqlMethods.Like(u.Username, "%[0-9]%")
                       select u).ToList();

// Find usernames starting with letters A through M
var usersAtoM = (from u in myDB.Users
                where SqlMethods.Like(u.Username, "[A-M]%")
                select u).ToList();Code language: JavaScript (javascript)

Combining Multiple LIKE Conditions

A common requirement is searching across multiple fields or with multiple keywords. Here’s how you can approach it:

// Search for keyword across multiple fields
var results = myDB.Users
    .Where(u => u.Username.Contains(keyword) || 
                u.Email.Contains(keyword) || 
                u.FullName.Contains(keyword))
    .ToList();

// Search for multiple keywords in single field
string[] keywords = {"admin", "super", "mod"};
var adminUsers = myDB.Users
    .Where(u => keywords.Any(k => u.Username.Contains(k)))
    .ToList();Code language: JavaScript (javascript)

Performance Considerations

While LINQ Like operations are convenient, keep these performance tips in mind:

  1. Indexing is crucial – Just like with SQL, columns you frequently search with LIKE should be indexed.
  2. Leading wildcards are slow – Patterns like %keyword can’t use standard indexes effectively.
  3. Consider full-text search – SQL Server’s full-text search might be better than LIKE operations for complex text searching.

Real-World Examples

Let’s see these techniques in action with some practical examples:

Example 1: Simple User Search

public List<UserViewModel> SearchUsers(string searchTerm)
{
    using (var db = new ApplicationDbContext())
    {
        return db.Users
            .Where(u => u.Username.Contains(searchTerm) || 
                        u.Email.Contains(searchTerm) || 
                        u.FullName.Contains(searchTerm))
            .Select(u => new UserViewModel
            {
                Id = u.Id,
                Username = u.Username,
                Email = u.Email,
                FullName = u.FullName
            })
            .ToList();
    }
}Code language: JavaScript (javascript)

Example 2: Advanced Product Search with Categories

public List<Product> FindProductsByPattern(string pattern)
{
    using (var db = new StoreDbContext())
    {
        return db.Products
            .Where(p => SqlMethods.Like(p.ProductCode, pattern) || 
                        SqlMethods.Like(p.Name, "%" + pattern + "%"))
            .Include(p => p.Category)  // Eager loading related data
            .OrderBy(p => p.Name)
            .ToList();
    }
}Code language: JavaScript (javascript)

Common Challenges and Solutions

Case Sensitivity

LINQ’s Contains, StartsWith, and EndsWith methods are case-sensitive by default. For case-insensitive searches:

// Case-insensitive search
var results = myDB.Users
    .Where(u => u.Username.ToLower().Contains(keyword.ToLower()))
    .ToList();Code language: JavaScript (javascript)

Keep in mind that using functions like ToLower() can prevent SQL Server from using indexes properly. A better approach for production code:

// Using SqlMethods with case-insensitive collation
var results = myDB.Users
    .Where(u => SqlMethods.Like(u.Username, "%" + keyword + "%"))
    .ToList();Code language: JavaScript (javascript)

Multiple Keyword Search

When searching for any of multiple keywords:

string[] keywords = {"apple", "orange", "banana"};
var fruitProducts = myDB.Products
    .Where(p => keywords.Any(k => p.ProductName.Contains(k)))
    .ToList();Code language: JavaScript (javascript)

Conclusion

The LINQ Like operator functionality revolutionizes handling string pattern matching in C# applications. Gone are the days of writing complex SQL queries or stored procedures to implement search features.

Whether you prefer method syntax with Contains, StartsWith, and EndsWith, or the more SQL-like approach with SqlMethods.Like LINQ provides elegant solutions for all your pattern-matching needs.

Remember these key takeaways:

  • Use Contains() for %keyword% patterns
  • Use StartsWith() for keyword% patterns
  • Use EndsWith() for %keyword patterns
  • Use SqlMethods.Like() for complex patterns with special characters

With these techniques in your developer toolkit, you’ll create more maintainable, type-safe code that is less prone to SQL injection vulnerabilities.

What’s your favorite LINQ pattern-matching technique? Have you found other creative ways to use LINQ’s Like functionality? Share your experiences in the comments!

Additional Resources

  • SQL Server Pattern Matching Fundamentals
  • Official Microsoft Documentation on LINQ
  • LINQ to SQL: DataContext Methods

Share if liked!

  • Click to share on Facebook (Opens in new window) Facebook
  • Click to share on X (Opens in new window) X
  • Click to share on LinkedIn (Opens in new window) LinkedIn
  • Click to share on Pinterest (Opens in new window) Pinterest
  • Click to share on Reddit (Opens in new window) Reddit
  • Click to share on Tumblr (Opens in new window) Tumblr
  • Click to share on Pocket (Opens in new window) Pocket

You may also like


Discover more from CodeSamplez.com

Subscribe to get the latest posts sent to your email.

First Published On: March 15, 2011 Filed Under: Database Tagged With: c#, linq

About Rana Ahsan

Rana Ahsan is a seasoned software engineer and technology leader specialized in distributed systems and software architecture. With a Master’s in Software Engineering from Concordia University, his experience spans leading scalable architecture at Coursera and TopHat, contributing to open-source projects. This blog, CodeSamplez.com, showcases his passion for sharing practical insights on programming and distributed systems concepts and help educate others.
Github | X | LinkedIn

Reader Interactions

Comments

  1. codemake says

    June 30, 2012 at 1:53 PM

    okey very good but I want to

    my string “abc zxy 123” … n

    SELECT * FROM Users WHERE
    UserName LIKE ‘%abc%’ OR
    Name LIKE ‘%zxy%’ OR Name ‘%123%’

    … n

    ???

    Reply
  2. John G. says

    December 15, 2012 at 7:44 AM

    Thank you! This is exactly what I was looking for. I am new to LINQ and find it great but just have to learn some of the ends and outs.

    Reply
  3. Luis Villarroel says

    January 28, 2019 at 10:15 AM

    Thank friend

    Reply

Leave a ReplyCancel reply

Primary Sidebar

  • Facebook
  • X
  • Pinterest
  • Tumblr

Subscribe via Email

Top Picks

python local environment setup

Python Local Development Environment: Complete Setup Guide

In-Depth JWT Tutorial Guide For Beginners

JSON Web Tokens (JWT): A Complete In-Depth Beginners Tutorial

The Ultimate Git Commands CheatSheet

Git Commands Cheatsheet: The Ultimate Git Reference

web development architecture case studies

Web Development Architecture Case Studies: Lessons From Titans

static website deployment s3 cloudfront

Host Static Website With AWS S3 And CloudFront – Step By Step

Featured Dev Tools

  • Diff Checker
  • JWT Decoder

Recently Published

python file handling

Python File Handling: A Beginner’s Complete Guide

service worker best practices

Service Worker Best Practices: Security & Debugging Guide

advanced service worker features

Advanced Service Worker Features: Push Beyond the Basics

service worker framework integration

Service Workers in React: Framework Integration Guide

service worker caching strategies

Service Worker Caching Strategies: Performance & Offline Apps

Footer

Subscribe via Email

Follow Us

  • Facebook
  • X
  • Pinterest
  • Tumblr

Demos

  • Demo.CodeSamplez.com

Explore By Topics

Python | AWS | PHP | C# | Javascript

Copyright © 2025

https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_18d96bda2442d31e66acb1852338ec5792b31254aba0b14d3020dab63c972e91009ef4002b52538ee4322bf3d5810ab1679deb72f620be351dc680671bb28a5f.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_c402e38f1879c18090377fb6b73b15ac158be453ecda3a54456494fe8aba42b990c293bae5424e5643d52515ffc2067e0819995be8d07d5bba9107a96780775c.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_ffc3511227531cc335353c54c3cbbaa11d0b80e5cb117478e144436c13cd05495b67af2e8950480ed54dbdabcdcef497c90fdb9814e88fe5978e1d56ce09f2cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_d57da9abfef16337e5bc44c4fc6488de258896ce8a4d42e1b53467f701a60ad499eb48d8ae790779e6b4b29bd016713138cd7ba352bce5724e2d3fe05d638b27.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_d286e50977f467ebee8fecdcb44e6a6b9a29f2b911dfe58b30ff4f0545aa2b19bca73246e23de9a6d2380bf20e6b8a001b5ba2051042d104c6d411b474fd3368.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_556272a5f9c5e1b26dcf93c48dd6c60d2107db888f97b70498f312c9052331e10005db30e1259f325d650689883af8e7250f282b512037503c7b7dcf03bef034.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_dccc492dbbfdac33d1411f9df909e849c7268fcf99b43007f278cde3a0adc0ae00e8cae5ec81cf255b9a6eae74e239ba1fa935572af77173219cb081f7d2327d.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_00bacf9e36181aac2b666d110cd9d82257f846766e7041b2d7b3c909b458982931ccc9b203e37098fbdfcf43ca359cf04e3824a724a6789fc204196d3a72ad29.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_c1c18b8baf8ed2aa84a8022e80b5422016646101cc3549c023473f24ad731189d3f4e279527a58a60bef61e6f749d51f280c52a82dfdab5075e6bc20bf21b240.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_68b6d1949e90b6a37c5195ae17874e7c2455352144f28a76be0f68f7a941e6d664fa3c931485f2c5463521acdac05ff6642f0c94fa557a087caa9478d162f085.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_bb8058a9e234a7ffaa98891b1df7f6b8e67410e6984568b151daa05113b8c7f89d7b5918ae73f020998a16f7f5a087a13d6a9a5e5d7c301e2ca12fd9d1f8d177.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_647fb67570c6108fb10ae6785a1abdbecac99ffcf80351d0bef17c3cf783dce497b1895fcdaae997dacc72c359fbfb128cc1540dd7df56deb4961e1cd4b22636.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f7a298a0f1f754623fe3b30f6910ce2c1373f715450750bd7a391571812b00df1917e2be90df6c4efc54dbdfda8616278a574dea02ba2c7a31992768df8db334.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_df30604d5842ef29888c3c1881220dc6d3f8854666d94f0680c5f38aa643c5fb79b10eb9f10998d8856eb24ca265783195937434fd6c2bb8e4846df0277a7fb7.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f17fe6fb0993f1703181d7ae9e9ea570f3d33a43afd6f2a4567daa1a6745698c7b8193dc72d50991d2dd87cd3dcf663959206607d193a9b57926d061a1f50aef.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_945dcbab2c2a131f3c90f4fb91776b76066d589f84fb55bff25cd5d79a56218000616bfca1f0af9a74f32348693707af49e8fe624de8aa34f1e1c5b6a25709cf.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_65820d252e1b93596de6697fd5f02483f3e2524a0696c7d698b64745edb32bf5831a90e556842f5f88c8209766cc78ca3a41cf783d20236a9f90d4a7ea7b3e72.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_7286884797a1210857e2a36f8ab46604b0034b6abf512380447a5763c873db6a72b8547f660053de0ea69faef1eb64878f39ff4b0ea86c963efab95764a3bf5b.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_cbcf6c279ac6c6a25ae138bf964e64a5fd90d22dcdf8a53b6fe7b72cefa51063bfb0181a6e50dd2acdcae2795619887d1d83b10461e44e5103be756f2588d837.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_47965bc586b95810c925b9df3314e0c9a5cd121e70ca0831f87df0bc034695de4f83ecf2def86f737e14614ee138794473cf32cd3082a5d38db9dec0c1f266fa.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_12aa201cea075846d266536aa222d64d4088b851d87f55dac5e611b77add6826c8ebc6e82650fcd1a9e88a05a0072dedd195719c5f64cd4580a0acd8aee05d92.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_80a4a4c808f46b20177fec8ee1a931010e5d14047c467a7f976cb5b2529b569eeb61558804f2f1a2d2a2347a1e2041500c1b275b1b4c31bbb4b36d8b4183b2b6.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_51e96ef2a74dd5de5980009c028a2e478d443dd5251b05253e99582fad9a4a949a99d0bcb00bb64f2378d4502e982deb1340597715c63bd275938389c866b470.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_d87ea86dd0e7ecdd5fe7a5bb67becf943e57c3add866b456034d51663d099031bd563e12f61fdccc044969adf938a8584ed22ccd401ab8b669e20e4f92fb54e8.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_35311c3d71a3605fad4e1d6b50f3911311cdcc46418bdf56d6d0308a75a69585269ee7582a335e29989adf308fa1a81a10a2c2d4e257e9d680447a4996f6269e.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_f4fc182ef03c12e9dcadd6febc3dbaa4a29134469057ca9e8ec0be2f2de29a494514ff4b59798e74debf26f78b2df2b3e2665c69b77035761fb463b783202915.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_85c0f2769456e60153b0fd8364b82a035da53384f62de342d9bdca806f3f1ea56486919a00497a18d457949c82bf8bfacc4423fc332074ddf71a49a8fe628fff.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_1b7e49e98f5960d71636812e807832cc98a24f48bc493652ddb2f9c4ce08bc89a8fd5d9550a8e2887d1d8887ce02924a878361c296d21ceba18a56f3ace130bd.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_09eecfdd96206ed13830b4b93cfb2cc75cd38083671a34194437b5734b5bb38712209dc335b07e3266ceb3c3a44a155b9bbe5f3e0e1105b19dd45d3def76f020.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_4c089fbdb88e3b624a6f884d3ba1bf606f003bfcd3742376d0d353cd62181dc663aa3811a56361c3100de488fc4d6595a50de2b26f058921ba74f5f2c1b5be00.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_897ff6ac314c5f5e0f496c6af624bd9abf296a02cb5aeb850b9220b6dc3ce2fc4004cb02ed8b59d59d4b9c9d90f050d6eebc1d08ecaebab2f671f7d9367e6410.js
https://codesamplez.com/wp-content/cache/breeze-minification/js/breeze_mobile_67d1e619e71d36ae00ddcf85ee18628bb4eb64fcb3d6119b463e75cb987013420a21136d19cd03e6634ccc01cfa9af4a357930e4cf6900953b7812efb4f249fb.js