/ / Wyraźna konwersja podczas przekazywania argumentów - c #, linq, encja-framework

Wyraźna konwersja podczas przekazywania argumentów - c #, linq, entity-framework

Moja metoda trwa

params Expression<Func<TEntity, IQueryable<TEntity>>>[] included

jako parametry. A później używa ich w ten sposób:

IQueryable<TEntity> query = dbSet;
if(included!=null)
{
foreach(var z in included)
{
query.Include(z);
}
}

jednak nie jestem w stanie wywołać tej funkcji z powodu błędu zgłoszonego w tym wywołaniu:

Get(w=>w.Device, w=>w.DeviceUsage));

Błąd 10 Nie można niejawnie przekonwertować typu „magazyn.Models.Device” na „System.Linq.IQueryable”. Wyraźny konwersja istnieje (brakuje Ci obsady?)

Jak zmodyfikować połączenie, aby przekazać te dwa parametry?

Odpowiedzi:

3 dla odpowiedzi № 1

Dołączone wyrażenia powinny być typu Expression<Func<TEntity, object>> - służą do wyboru dołączonej nawigacji własność z encji, której dotyczy zapytanie:

params Expression<Func<TEntity, object>>[] included

Pamiętaj również, że jeśli nie przekazujesz wyrażeń do metody, tablica parametrów nie będzie miała wartości zerowej - będzie pusta. Możesz więc pominąć kontrolę zerową

IQueryable<TEntity> query = dbSet;

foreach(var path in included)
query = query.Include(path);