Как использовать «содержит» или «как» в динамическом запросе linq? - PullRequest
36 голосов
/ 16 марта 2010

Файл справки, поставляемый с Dynamic Linq в CSharpSamples.zip, не показывает никаких примеров использования содержит или как.

Есть ли простые обходные пути для этого? то есть где (col как @col) не работает.

Ответы [ 3 ]

61 голосов
/ 16 марта 2010

Вот ответ! Динамический Linq действительно поддерживает. оператор,

Согласно документам:

"Поле экземпляра или свойство экземпляра доступ. Любое публичное поле или собственность можно получить доступ. "

Таким образом, можно использовать этот синтаксис

.Where("MyColumn.Contains(@0)", myArray)

Спасибо за все предложения! И спасибо мне за то, что нашли решение.

11 голосов
/ 05 октября 2016

Для меня решение было externalIt .

   class User { public string Name { get; set; } }
   ...
   IQueryable<User> query = db.Users;
   ...
   query = query.Where("@0.Contains(outerIt.Name)", list);

Обратите внимание, что outerIt является своего рода ключевым словом , встроенным в библиотеку (вам не нужно изменять его, поскольку вы можете прочитать его в ответе здесь). Через него вы можете получить доступ к свойству типа вашего запроса.

4 голосов
/ 16 марта 2010

На самом деле, есть прямая поддержка для оператора like в Linq2Sql:

db.MyTable.Where(a => SqlMethods.Like(a.Name, "%"+searchTerm+"%"))

Смотрите здесь:

http://msdn.microsoft.com/en-us/library/system.data.linq.sqlclient.sqlmethods_members.aspx

... но для большинства приложений я предпочитаю использовать setsWith, EndWith и содержит.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...