System.Linq.Dynamic's。会被误解

时间:2011-10-14 13:48:12

标签: vb.net linq dynamic datasetextensions

我已经构建了一个包含许多引用的大型程序。 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 个答案:

答案 0 :(得分:2)

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

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

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

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

一个例子:

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

会转换为

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