Аз съм нов за 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
.