Comment écrire LINQ avec la même fonction de suivre sql Comme:Comment écrire LINQ qui fonctionne comme SQL?
select * from table where col like param?
Comment écrire LINQ avec la même fonction de suivre sql Comme:Comment écrire LINQ qui fonctionne comme SQL?
select * from table where col like param?
var selection = records.Where (r => r.Col.Contains (param));
Table.Where(t => t.col.Contains(param));
... devrait faire l'affaire.
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%]
Est-ce que c'est juste moi, ou est-ce exagéré quand Contient fait ce dont il a besoin? –
@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
@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é. –
var item = from SomeCollection where someCondition select I;
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;
StartsWith se traduit également comme dans SQL selon http://srtsolutions.com/blogs/billwagner/archive/2007/08/12/linq-2-sql-string-functions.aspx –
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é. –