2012-10-16 11 views
7

Jestem nowy w LINQ i OrmLite/MySql. Mam prośbę usług argumentu, który musi doprowadzić WHERE:OrmLite/MySql/SqlExpressionVisitor - potrzebuję klauzuli "jak"

`Name` LIKE '%something%' OR `Name` LIKE '%something%else%' 

wiem, że mogę stworzyć IN() lub = klauzulę, poprzez:

ev.Where(rn => Sql.In(rn.Name, request.Name)); // Assuming an array here 
ev.Where(rn => rn.Name== request.Name)); 

Ale mogę nie wydaje się znajdź konstrukcję, która pozwoli mi zbudować LIKE. Ponadto, Name jest tak naprawdę aliasem, więc staram się uniknąć ręcznego tworzenia klauzuli where.

Odpowiedz

3

Można zbudować ten konkretny przykład używając Contains, tj:

ev.Where(rn => rn.Contains(rn.Name, "something") 
    || rn.Contains(rn.Name, "something%else")); 

StartsWith i EndsWith są powszechnie stosowane w LINQ wygenerować LIKE klauzule asterisk tylko na jednym końcu (ale wydaje się, dialekt definiuje MySql StartsWith nieco differently, prawdopodobnie na wydajność).

można sprawdzić domyślny dialekt source code aby potwierdzić to, co zostanie wygenerowany dla EndsWith i Contains.