Динамическое предложение where в запросе linq - PullRequest
1 голос
/ 15 октября 2011

Извините за мой плохой английский. У меня проблема. Я хочу создать динамическое предложение where в запросе LINQ. У меня есть одно имя объекта списка «list1», имеющее значения Country, City, State и одно датированное, в котором есть столбец с именем Name, Lastname, Country, City, State. Я хочу сравнить значения list1 со столбцами данных и получить пустые / пустые строки.

Итак, я хочу запрос LINQ, подобный этому:

var query = from p in datatable.AsEnumerable()
            where list1 == null
            select p 

но он возвращает ошибку. Как я могу решить эту проблему?

Заранее спасибо.

1 Ответ

1 голос
/ 15 октября 2011

Хорошо, поехали - ваш запрос смехотворно плох.

  • У вас не должно быть datatable.AsEnumerable - оно вызывает сканирование таблицы (пробегает всю таблицу).
  • Во-вторых, вы должны выразительно кодировать все поля. Это будет неприятно - по определению В зависимости от размера списка это будет очень плохо.

В общем, каждый запрос сам по себе является IQueryable, так что вы можете связать, где условия. ОЧЕНЬ приятно - я использую это частично сам, определяя основной запрос, затем добавляя дополнительные предложения where по мере необходимости (по входному параметру) перед выполнением .

К сожалению, сравнение таблицы со списком элементов по индивидуальному совпадению полей так же плохо, как это происходит с уровня sql.

...