Renato Haddad

MVP, Developer .NET and MS-Office, MCPD, MCTS

Como usar o LIKE do SQL com o LINQ to SQL?

Muitos desenvolvedores tem me questionado sobre o uso do Like do SQL no LINQ to SQL. A questão é que ele existe sim, basta vc usar o namespace using System.Data.Linq.SqlClient e o método SqlMethods. Veja um exemplo:

var q = from c in db.Customers
        where SqlMethods.Like(c.CustomerID, txtFiltro.Text.Trim() + "%")
        select c;

Se o usuário digitar a letra A no txtFiltro.Text.Trim(), o T-SQL gerado para este exemplo é:

SELECT [t0].[CustomerID], [t0].[CompanyName], [t0].[ContactName], [t0].[ContactTitle], [t0].[Address], [t0].[City], [t0].[Region], [t0].[PostalCode], [t0].[Country], [t0].[Phone], [t0].[Fax]
FROM [dbo].[Customers] AS [t0]
WHERE [t0].[CustomerID] LIKE 'a%'

Ou seja, deixe que o framework gere o T-SQL, pois ele não irá errar.
Este exemplo está contido no CD de treinamento multimídia do LINQ to SQL, de minha autoria (www.renatohaddad.com/videos.aspx).
Bons estudos e aproveitem o LINQ

Posted: Oct 29 2008, 02:15 PM by renatohaddad | with 3 comment(s)
Filed under:

Comments

Fidencio said:

Renato, muito bom a dica, sobre o LIKE gostei, vou até testar, Entretanto eu to usando assim..funciona tambem..

//Se quiser pegar tudo q termina com...usa o a Extension Method...EndWith(param...)

var q = from c in db.Customers

   where c.CustomerID.StarWith(this.MeuTextBox.Trim())

   select c;

MeuDataGridView.DataSource = q.toList();

# February 21, 2009 3:06 PM

Bruno said:

Obrigado pelo post me ajudou muito, é muito bom usar linq.

# July 13, 2010 11:34 PM

Eduardo said:

Pessoal, so para complementar o post... a maneira que vcs descreveram é do LIKE 'valor%'. Caso queiram usar o LIKE '%valor%' é so utilizar o metodo Contains ao inves do StartsWith.

Exemplo:

var q = from c in db.Customers

  where c.CustomerID.Contains(this.MeuTextBox.Trim())

  select c;

MeuDataGridView.DataSource = q.toList();

# July 16, 2011 10:45 PM
Leave a Comment

(required) 

(required) 

(optional)

(required)