2012-07-24 91 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。 试试看,也许它有效。