2009-11-05 4 views

Répondre

2
var selection = records.Where (r => r.Col.Contains (param)); 
+2

StartsWith se traduit également comme dans SQL selon http://srtsolutions.com/blogs/billwagner/archive/2007/08/12/linq-2-sql-string-functions.aspx –

+1

Intéressant , mais pas évident. Appartient aux trucs que vous devez savoir. Pour une meilleure maintenabilité je collerais avec "Contient" ou "J'aime" comme Dinah l'a suggéré. –

4
Table.Where(t => t.col.Contains(param)); 

... devrait faire l'affaire.

4

De: http://blogs.microsoft.co.il/blogs/bursteg/archive/2007/10/16/linq-to-sql-like-operator.aspx

Creuser dans l'espace de noms System.Data.Linq.SqlClient, je trouve une petite classe d'aide appelée SqlMethods, qui peut être très utile dans de tels scénarios. SqlMethods a une méthode appelée Comme, qui peut être utilisé dans une requête LINQ to SQL:

var query = from c in ctx.Customers 
      where SqlMethods.Like(c.City, "L_n%") 
      select c; 

Cette méthode est l'expression de chaîne pour vérifier (la ville du client dans cet exemple) et les modèles pour tester contre qui est prévu de la même manière que vous écrivez une clause LIKE en SQL.

Utilisation de la requête ci-dessus a généré l'instruction SQL requis:

SELECT CustomerID, CompanyName, ... 
FROM dbo.Customers 
WHERE City LIKE [L_n%] 
+0

Est-ce que c'est juste moi, ou est-ce exagéré quand Contient fait ce dont il a besoin? –

+0

@Justin Niessner: pas d'argument ici. J'ai fait une recherche sur Google avant que d'autres réponses soient listées et c'est ce que j'ai trouvé. – Dinah

+0

@Dinah Assez juste. Contient() fonctionnera généralement pour la plupart des cas. SqlMethods.Like() est pour les cas plus complexes où le développeur veut plus de contrôle sur le SQL généré. –

0
var item = from SomeCollection where someCondition select I; 
0

Vous pouvez utiliser la clause contient dans LINQ qui est le même que Sql Comme. Vous pouvez trouver le code suivant.

var query = from e in emp where e.name.Contains("Mark") select e;

Questions connexes