0

我已经构建了一个包含许多参考的大型程序。铁:

  • 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)

但是 withSystem.Data.DataSetExtensions Where被误解了。编译器期望(Datarow, Integer, Boolean). 如果我删除System.Data.DataSetExtensions这个表达式一切正常,但我得到许多其他错误,所以我需要这个参考。

我该怎么做才能Where正确解释?

4

1 回答 1

2

大型程序是否都在一个文件中?

如果尚未完成,请将您的程序拆分为类,然后将每个类放入其自己的文件中。然后只在每个文件中使用所需的引用。

也许这样你就可以解决命名空间冲突。

如果由于某种原因您绝对需要两个冲突的命名空间并且无法解决歧义,您可以直接调用扩展方法。基本上扩展方法只是另一个类的另一个静态方法。ds.Sales.Where(strWhere)只是该方法调用的语法糖。

一个例子:

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

会翻译成

EnumerableRowCollectionExtensions.Where(ds.Sales.AsEnumerable(), yourCondition)
于 2011-10-14T13:56:40.107 回答