Файл справки, который поставляется с Dynamic Linq в файле CSharpSamples.zip, не показывает никаких примеров использования содержимого или подобного.
Существуют ли какие-либо простые способы обхода? то есть (col like @col) не работает.
Файл справки, который поставляется с Dynamic Linq в файле CSharpSamples.zip, не показывает никаких примеров использования содержимого или подобного.
Существуют ли какие-либо простые способы обхода? то есть (col like @col) не работает.
Вот ответ! Динамический Linq поддерживает. оператор,
Согласно документам:
"Поле экземпляра или свойство экземпляра доступ. Любое публичное поле или собственность могут быть доступны".
Таким образом, этот синтаксис можно использовать
.Where("MyColumn.Contains(@0)", myArray)
Спасибо за все предложения! И спасибо мне за то, что вы нашли решение.
На самом деле существует прямая поддержка подобного оператора в Linq2Sql:
db.MyTable.Where(a => SqlMethods.Like(a.Name, "%"+searchTerm+"%"))
Смотрите здесь:
http://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods_members.aspx
... но я предпочитаю использовать startsWith, endsWith и содержит для большинства приложений.
Для меня решение было externalIt.
class User { public string Name { get; set; } }
...
IQueryable<User> query = db.Users;
...
query = query.Where("@0.Contains(outerIt.Name)", list);
Обратите внимание, что outerIt является своего рода ключевым словом , встроенным в библиотеку (вам не нужно его изменять, так как вы можете прочитать его в ответе здесь). Вы можете получить доступ к свойству своего типа запроса.
Обратите внимание, что решение предоставлено только для простых случаев: если вы хотите использовать параметры для источника вызова Содержит и/или если вы хотите использовать текущую запрошенную коллекцию, которая будет использоваться как параметр для вызова Содержит, то предоставленное решение не будет работать.
В следующем блоге вы можете найти решение для правильного расширения библиотеки Dynamic Linq и добавить поддержку для Contains extension: