2012-07-24 89 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在同一個方法(它不考慮異常中的通用位置)之間給出了一個ambigous異常。有時候會發生在我身上,嘗試清理解決方案並重新構建。 – 2012-07-24 11:51:48

回答

6

不幸的是另一個第三方.dll庫包含相同的動態linq庫內部。 Trirand的jQGrid庫包含動態linq庫,這是導入System.Linq.Dynamic庫時發生衝突的原因。

+0

你是如何解決這個問題的? – Cody 2015-05-18 19:39:25

0

從您的代碼中使用下列內容:

using System.Linq; 
+0

不,它不會像預期的那樣影響結果,因爲來自相同庫方法的衝突。 – Freshblood 2012-07-24 11:50:36

+0

我不認爲這不是問題。 'Enumerable.Where'具有另一個類型簽名,並且錯誤消息甚至沒有提及'System.Linq.Enumerable'。 – sloth 2012-07-24 11:52:41

+0

@新鮮血液:嘗試重建您的項目。 – 2012-07-24 11:54:09

0

db.ReservationSet有哪些類型?

如果是您的MyClass實例的集合,那麼請嘗試編寫db.ReservationSet.Where<MyClass>("blbalbabla",1,2)

如果是分配給IQueryable然後嘗試寫:
((IQueryable)db.ReservationSet).Where("blbalbabla",1,2)

+0

我已經嘗試過,但檢查我的答案我發現問題。 – Freshblood 2012-07-24 11:56:44

0

我知道這是不是最漂亮的方式。但我沒有其他想法。

將您的課堂拆分爲2個cs文件並創建部分課程。所以你從其中一個文件中刪除使用System.Linq。 試試看,也許它有效。