2012-07-24 4 views
6

私はnugetパッケージ経由でDynamicLinqライブラリをダウンロードしています。私はそれを以下のように使用しました拡張メソッド間の曖昧なメソッド呼び出し

db.ReservationSet.Where("blbalbabla",1,2) 

しかし、私は例外以下になります。

エラー38コールは、以下の方法又は 特性と曖昧である: 'System.Linq.Dynamic.DynamicQueryable.Where(System.Linq.IQueryable、 ストリング、paramsは[]オブジェクト)' と ' System.Linq.Dynamic.DynamicQueryable.Where(System.Linq.IQueryable、 文字列、 オブジェクト[] paramsは)」Fを:プロジェクト\ IEKeysNew \ IEKEYS \コントローラ\ ReportController.cs 145 22ここでIEKEYS

\両方の方法のサインです。

public static IQueryable<T> Where<T>(this IQueryable<T> source, string predicate, params object[] values); 
public static IQueryable Where(this IQueryable source, string predicate, params object[] values); 

このコンパイル時の例外を取り除くための何かを見つけることができませんでした。あなたのコードから使用して、次の

+0

It0sは、同じメソッド間であいまいな例外を示しています(例外のGeneric Whereは考慮していません)。時にはそれが私に起こり、ソリューションをきれいにして再構築しようとします。 –

答えて

6

他のサードパーティの.dllライブラリには、同じダイナミックlinqライブラリinternalyが含まれています。 TrirandのjQGridライブラリにはダイナミックなlinqライブラリが含まれており、これがSystem.Linq.Dynamicライブラリをインポートするときの競合の原因です。

+0

どうやってこれを解決しましたか? – Cody

0

削除:

using System.Linq; 
+0

いいえ、これは同じライブラリメソッドから既にこのコンフリクトの原因が予想通りに結果に影響しません。 – Freshblood

+0

これは問題ではないと私は思わない。 'Enumerable.Where'には別の型シグネチャがあり、エラーメッセージには' System.Linq.Enumerable'は言及されません。 – sloth

+0

@Freshblood:プロジェクトを再構築してみます。 –

0

db.ReservationSetは、どのような種類があるのでしょうか?

MyClassのインスタンスのコレクションの場合は、db.ReservationSet.Where<MyClass>("blbalbabla",1,2)と書いてみてください。

それはIQueryableに割り当て可能である場合には、書いてみる:
((IQueryable)db.ReservationSet).Where("blbalbabla",1,2)

+0

私はすでに試してみましたが、私の答えを確認して問題を発見しました。 – Freshblood

0

私はこれが一番きれいな方法ではありません知っています。しかし、私は別の考えを持っていません。

クラスを2つのcsファイルに分割し、部分クラスを作成します。したがって、いずれかの文書からSystem.Linqを削除してください。 それはおそらくそれを試してみてください。

関連する問題