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

大きなプログラムはすべて 1 つのファイルにまとめられていますか?

まだ行っていない場合は、プログラムをクラスに分割してから、各クラスを独自のファイルに入れます。次に、すべてのファイルで必要な参照のみを使用します。

おそらく、この方法で名前空間の競合を解決できるでしょう。

何らかの理由で競合する両方の名前空間が絶対に必要であり、あいまいさを解決できない場合は、拡張メソッドを直接呼び出すことができます。基本的に、拡張メソッドは別のクラスの別の静的メソッドです。ds.Sales.Where(strWhere)そのメソッド呼び出しの構文シュガーにすぎません。

例:

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

に翻訳されます

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