Ähnlicher Operator oder Platzhalter in LINQ to Entities verwenden

8

Ich verwende LINQ 2 -Entitäten. Folgendes ist das Problem:

%Vor%

Erwartete Konvertierung: LIKE '% test% .doc%'

Wenn es LINQ 2 SQL wäre, hätte ich SqlMethods.Like verwenden können, wie jemand es in meiner vorherigen Frage beantwortet hat. Aber jetzt, da ich L2E nicht L2S verwende, brauche ich andere Lösung.

    
WhoIsNinja 02.02.2011, 19:00
quelle

6 Antworten

2

Sie können versuchen, diesen Artikel zu verwenden Autor beschreibt, wie eine LIKE-Anweisung mit Platzhalterzeichen in LINQ to Entities erstellt wird.

EDIT: Da die ursprüngliche Verbindung jetzt tot ist, hier ist die ursprüngliche Erweiterungsklasse (nach Jon Koeter in den Kommentaren ) und Anwendungsbeispiel.

Erweiterung:

%Vor%

Verwendungsbeispiel:

%Vor%

oder, wenn Sie erwarten, dass Ihre Benutzer mehr an Wildcards im Windows Explorer-Stil gewöhnt sind:

%Vor%     
EvgK 02.02.2011, 19:51
quelle
15

Die SQL-Methode PATINDEX bietet die gleiche Funktionalität wie LIKE. Daher können Sie die Methode SqlFunctions.PatIndex verwenden :

%Vor%     
BG100 23.04.2013 11:18
quelle
3

Nach Magnus 'korrekter Antwort folgt hier eine Erweiterungsmethode, die wie in meinem Projekt benötigt wiederverwendet werden kann.

%Vor%

Verwendung:

%Vor%

Die Erweiterung verwendet den Prädikatgenerator in Ссылка . Die resultierende SQL führt einen einzelnen Tabellen-Scan der Tabelle durch, unabhängig davon, wie viele Begriffe darin enthalten sind. Jo Vdb hat ein Beispiel , von dem aus man if starten könnte Sie wollten stattdessen eine Erweiterung von iQueryable.

    
Legolomaniac 14.11.2012 23:13
quelle
2

Benutze einen regulären Ausdruck ...

Im Folgenden werden alle Dateien im aktuellen Verzeichnis gedruckt, die mit test .doc * übereinstimmen (dos Wildcard-Stil - was ich glaube, wonach Sie fragen)

%Vor%     
syllogism 02.02.2011 19:54
quelle
2

Teilen Sie die Zeichenfolge

%Vor%     
Magnus 03.02.2011 14:45
quelle
0

Also habe ich dasselbe versucht - versucht, eine Liste zu paaren, um alle Kandidaten zurückzugeben, die mit einem SearchTerm übereinstimmen. Ich wollte es so, dass, wenn ein Benutzer "Arizona" eintippte, es alles zurückgeben würde, unabhängig von Fall, der Arizona hatte. Wenn der Benutzer "Arizona Cha" eintippte, würde er auch Artikel wie "Arizona License Change" zurückgeben. Folgendes funktionierte:

%Vor%     
Paul Mc 23.05.2013 13:01
quelle

Tags und Links