2012-07-24 11 views
6

Zostałem pobrany biblioteki DynamicLinq przez pakiet nuget. Użyłem go poniżej:Ambigiuous wywołanie metody między metodami rozszerzenia

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

Ale dostaję poniżej wyjątku.

błędu 38 wywołanie jest niejednoznaczna pomiędzy następującymi sposobami lub właściwości: 'System.Linq.Dynamic.DynamicQueryable.Where (System.Linq.IQueryable, ciąg PARAMETRY Zadanie [])', a ' System.Linq.Dynamic.DynamicQueryable.Where (System.Linq.IQueryable, ciąg params Zadanie [])”C: \ Projects \ IEKeysNew \ IEKEYS \ \ ReportController.cs Kontrolery 145 22 IEKEYS

tutaj jest znakiem obu metod.

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

Nie mogłem znaleźć czegoś, aby pozbyć się tego wyjątku czasu kompilacji.

+0

It0s daje wyjątek ambiwalentny między tą samą metodą (nie bierze pod uwagę Generic Where in the exception). Czasami to mi się przydarza, spróbuj oczyścić rozwiązanie i ponownie zbuduj. –

Odpowiedz

6

Niestety inna trzecia biblioteka .dll zawiera tę samą wewnętrzną bibliotekę dynamq linq. Biblioteka jQGrid Triranda zawiera dynamiczną bibliotekę linq, która jest przyczyną konfliktu podczas importowania biblioteki System.Linq.Dynamic.

+0

Jak to rozwiązałeś? – Cody

0

Usuń następujące korzystania z kodu:

using System.Linq; 
+0

Nie ma to wpływu na wynik, jak oczekiwano, już ten konflikt powoduje z tych samych metod biblioteki. – Freshblood

+0

Nie sądzę, że to nie problem. 'Enumerable.Where' ma podpis innego typu, a komunikat o błędzie nawet nie wspomina o' System.Linq.Enumerable'. – sloth

+0

@Freshblood: spróbuj odbudować swój projekt. –

0

Jakie ma db.ReservationSet ma?

Jeśli jest to kolekcja instancji twojego MyClass, spróbuj napisać db.ReservationSet.Where<MyClass>("blbalbabla",1,2).

Jeśli jest przypisane do IQueryable następnie spróbuj napisać:
((IQueryable)db.ReservationSet).Where("blbalbabla",1,2)

+0

Byłem już wypróbowany, ale sprawdź moją odpowiedź i znalazłem problem. – Freshblood

0

wiem, że to nie jest najładniejsza sposób. Ale nie mam innego pomysłu.

Podziel klasę na pliki 2 cs i utwórz klasy częściowe. Usuwamy więc użycie System.Linq z jednego z dokumentów. Spróbuj, może to działa.

Powiązane problemy