2012-07-24 15 views
6

DynamicLinq kütüphanesini nuget paketi ile indirdim. BenGenişletme metodu ile sesli arama metodu arasında bağlantı kurabilirsiniz

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

'un altında kullanıyorum ama aşağıda istisna var.

38 Hata arama aşağıdaki yöntemler veya özellikleri arasında belirsiz: 'System.Linq.Dynamic.DynamicQueryable.Where (System.Linq.IQueryable, dize, nesne [] Parametreler)' ve \ Projeler \ IEKeysNew \ IEKEYS \ Kontrolörler İşte ReportController.cs 145 22 IEKEYS

\: System.Linq.Dynamic.DynamicQueryable.Where 'F (System.Linq.IQueryable, dize, nesne [] params) her iki yöntemin de işareti.

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); 

Bu derleme zamanı istisnasından kurtulmak için bir şey bulamadım. kodunuzdan kullanarak aşağıdaki

+0

Bu, aynı yöntem arasında muğlak bir istisna sağlayarak (istisnada Genel Olarak Nerede olduğunu düşünmüyor). Bazen bu bana olur, çözümü temizlemeye çalışın ve tekrar oluşturun. –

cevap

6

Ne yazık ki başka bir üçüncü taraf .dll kitaplığı, aynı dinamik linq kitaplığını dahili içeriyor. Trirand'ın jQGrid kütüphanesi dinamik linq kütüphanesi içerir ve System.Linq.Dynamic kütüphanesini içe aktardığım zaman bu çatışmanın sebebi de budur.

+0

Bunu nasıl çözdünüz? – Cody

0

Kaldır:

db.ReservationSet sahiptir neyi tip
using System.Linq; 
+0

Hayır, bu çakışmayı halihazırda beklendiği gibi etkilemez, aynı çakışma yöntemleri aynı kitaplık yöntemlerinden kaynaklanır. – Freshblood

+0

Bunun problem olmadığını düşünüyorum. 'Enumerable.Where' başka bir tür imzası vardır ve hata mesajı bile' System.Linq.Enumerable' denir. – sloth

+0

@Freshblood: projenizi yeniden oluşturmayı deneyin. –

0

?

Eğer MyClass örneğinizin bir koleksiyonudur, db.ReservationSet.Where<MyClass>("blbalbabla",1,2) yazmayı deneyin. o IQueryable atanabilir ise

sonra yazmaya çalışıyorum:
((IQueryable)db.ReservationSet).Where("blbalbabla",1,2)

+0

Zaten denedim ama cevabımı kontrol et, problemi buldum. – Freshblood

0

bu güzel yolu olmadığını biliyorum. Ama başka bir fikrim yok.

Sınıfınızı 2 cs dosyasına ayırın ve kısmi sınıflar oluşturun. Bu yüzden, belgelerden birini kullanarak System.Linq'u silersiniz. Deneyin belki işe yarıyor.