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.
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%Die SQL-Methode PATINDEX bietet die gleiche Funktionalität wie LIKE. Daher können Sie die Methode SqlFunctions.PatIndex verwenden :
%Vor%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.
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%Tags und Links c# linq linq-to-entities