/ / OrmLite / MySql / SqlExpressionVisitor - нужда от "подобна" клауза - servicestack, ormlite-servicestack

OrmLite / MySql / SqlExpressionVisitor - нужда от "подобна" клауза - servicestack, ormlite-servicestack

Аз съм нов за LINQ и OrmLite / MySql. Имам аргумент за заявка за услуга, който трябва да доведе до клауза къде:

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

Знам, че мога да създам един IN() или = клауза, чрез:

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

Но не мога да намеря конструкция, която да ми позволи да изградя а LIKE, Също, Name всъщност е псевдоним, така че се опитвам да избегна ръчно изработването на клаузата къде.

Отговори:

3 за отговор № 1

Можете да използвате конкретния пример Contains, т.е .:

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

StartsWith и EndsWith обикновено се използват в LINQ за генериране LIKE клаузи с маска със само един край (но изглежда, че диалектът на MySql дефинира StartsWith до известна степен различно, вероятно за ефективност.)

Можете да проверите диалекта по подразбиране програмен код за да потвърдите какво се генерира за EndsWith и Contains.