/ / OrmLite / MySql / SqlExpressionVisitor - potrzebujemy klauzuli "like" - servicestack, ormlite-servicestack

OrmLite / MySql / SqlExpressionVisitor - potrzebujemy klauzuli "like" - servicestack, ormlite-servicestack

Jestem nowy w LINQ i OrmLite / MySql. Mam argument żądania usługi, który musi doprowadzić do klauzuli where:

`Name` LIKE "%something%" OR `Name` LIKE "%something%else%"

Wiem, że mogę stworzyć IN() lub = Klauzula, poprzez:

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

Ale nie mogę znaleźć konstruktu, który pozwoli mi zbudować LIKE. Również, Name jest tak naprawdę aliasem, więc próbuję uniknąć ręcznego tworzenia klauzuli where.

Odpowiedzi:

3 dla odpowiedzi № 1

Możesz 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ą generalnie używane w LINQ do generowania LIKE klauzule ze znakiem wieloznacznym na jednym końcu (ale wygląda na to, że definiuje się dialekt MySql StartsWith nieco różnie, prawdopodobnie pod względem wydajności.)

Możesz sprawdzić domyślny dialekt kod źródłowy aby potwierdzić, do czego jest generowany EndsWith i Contains.