SQL Vergleichsoperator “LIKE” in LINQ abbilden.

<p>Beim Zugriff auf Daten mit LINQ gibt es keinen direkten LIKE-Operator, …</p> … da dieser reiner SQL-Dialekt ist und LINQ auch für andere Datenquellen verwendet wird. Eine einfache Möglichkeit eine LIKE-Suche durchzuführen ist es das Datenfeld mit den Funktionen ‘Feld.EndsWith(“TEXT”)’ oder ‘Feld.StartsWith(“TEXT”)’ einzuschränken, was dann in “LIKE ‘%TEXT’” bzw. “LIKE ‘TEXT%’” umgesetzt wird.

Klasse "SQLMethods"]Damit lassen sich jedoch nicht alle möglichen Fälle abbilden. Eine Lösung befindet sich in den Tiefen des “System.Data.Linq.SqlClient”-Namespaces. Dieser enthält eine Methode “SqlMethods” mit der man SQL-Spezialitäten, wie “LIKE” und “DATEDIFF” verwenden kann.   <pre lang=”csharp” file=”linq.cs”>IQueryable result = from p in mDb.Orders where SqlMethods.Like(p.number, OrderNumber) && p.date >= tmpFromDate && p.date <= tmpToDate orderby p.date descending select p;</pre>

Comments are closed.

 
blogoscoop