System.Linq.Dynamic's. Где будет неверно истолкован - PullRequest
0 голосов
/ 14 октября 2011

Я создал большую программу со многими ссылками. F.e.:

  • System.Data.DataSetExtensions
  • System.Linq.Dynamic

Я должен написать динамическое выражение Linq:

http://weblogs.asp.net/scottgu/archive/2008/01/07/dynamic-linq-part-1-using-the-linq-dynamic-query-library.aspx

В моем случае:

Dim query As IEnumerable = ds.Sales.Where(strWhere)

Но с System.Data.DataSetExtensions Where неверно истолковано. Компилятор ожидает (Datarow, Integer, Boolean). Если я удаляю System.Data.DataSetExtensions, все в порядке с этим выражением, но я получаю много других ошибок, поэтому мне нужна эта ссылка.

Что я могу сделать, чтобы Where интерпретировалось правильно?

1 Ответ

2 голосов
/ 14 октября 2011

Большая программа в одном файле?

Если это еще не сделано, разбейте вашу программу на классы, а затем поместите каждый класс в отдельный файл. Затем используйте только обязательные ссылки в каждом файле.

Может быть, таким образом вы сможете разрешить конфликт пространства имен.

Если по какой-то причине вам абсолютно необходимы оба конфликтующих пространства имен и вы не можете устранить неоднозначность, вы можете напрямую вызвать метод расширения. По сути, метод расширения - это просто еще один статический метод в другом классе. ds.Sales.Where(strWhere) является только синтаксическим сахаром для вызова этого метода.

Пример:

ds.Sales.AsEnumerable().Where(yourCondition)

будет переведено на

EnumerableRowCollectionExtensions.Where(ds.Sales.AsEnumerable(), yourCondition)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...