Wyrażenie LINQ z właściwościami klasy ogólnej
Chciałbym przekazać IQueryable i tablicę identyfikatorów do metody, która filtruje IQueryable na podstawie tych identyfikatorów.
Ponieważ identyfikatory mogą być długie lub int, powinny być rozwiązywane w sposób ogólny.
Wymyśliłem następujące:
public static IEnumerable<T> GetModified<TId, T>(IQueryable<T> objects, TId[] ids) where T : class
{
return objects.Where(j => ids.Contains((TId)j.GetType().GetProperty("Id").GetValue(j)));
}
Niestety otrzymuję wyjątek:
LINQ to Entities nie rozpoznaje metody metody „System.Object GetValue (System.Object)” i tej metody nie można przetłumaczyć na wyrażenie magazynu.