LINQ to SQL - sélectionnez l'endroit où le texte comme tableau de chaînes
J'ai une Liste<string
> de la variable de comptage, et je veux requête (via LINQ) une table pour trouver les articles qui contiennent l'un de ces chaînes dans la colonne de Texte.
Essayé ceci (ne fonctionne pas):
items = from dbt in database.Items
where (stringList.FindAll(s => dbt.Text.Contains(s)).Count > 0)
select dbt;
Requête serait quelque chose comme:
select * from items where text like '%string1%' or text like '%string2%'
Est-ce possible?
OriginalL'auteur bjallen | 2009-02-04
Vous devez vous connecter pour publier un commentaire.
Vérifier cet article pour faire ce que vous voulez:
http://www.albahari.com/nutshell/predicatebuilder.aspx
Cela fonctionne comme un rêve. J'ai essentiellement coupé et collé à leur code et a obtenu ce retour (avec mes propres données, schéma de cours):
Voici le code que j'ai couru pour la preuve de concept:
Je vous conseille d'aller sur le site pour le code et les explications.
(Je pars la première réponse, car elle fonctionne bien si vous avez besoin d'une instruction)
OriginalL'auteur Matthew Doyle
genre de la nouvelle à l'ensemble de LINQ to SQL jeu, mais il n'cette syntaxe de l'aide?
Ai eu à partir de:
http://blog.wekeroad.com/2008/02/27/creating-in-queries-with-linq-to-sql/
Merci pour l'idée Matthieu, mais qui génère la requête SQL suivante: SELECT [t0].[Texte] à PARTIR de [dbo].[Table] [t0] OÙ [t0].[Texte] (@p0), Il est à la recherche de la colonne de texte dans chaque élément de la matrice, plutôt que de rechercher pour chaque élément du tableau dans la colonne de texte.
OriginalL'auteur Matthew Doyle
Après la lecture de ce post, à la recherche de la même solution que toi, j'ai trouvé une solution en utilisant les
.Any
et.All
méthodes pour Linq sont une belle façon simple et élégante pour obtenir les résultats correspondants pour les tableaux.Dans ce cas je suis à l'aide d'une recherche d'entrée, séparés par des virgules comme un exemple. Je ne m'inquiète pas si le match n'est pas dans le même cas.
De la première à Obtenir certaines données de requête, à partir de Linq to SQL ou partout où
À l'aide de la lambda syntaxe pour nice code serré, et le résultat correspond à
.Any
chaîne de caractères dans la requête, soit le nom ou la description dans le tableau.Si vous ne souhaitez que des résultats où toutes les cordes sont appariés dans un champ quelconque, vous pouvez remplacer
.Any
avec.All
:OriginalL'auteur Slipdigital
À l'aide de:
Fonction de recherche est:
OriginalL'auteur Ali İncir