LINQ выражение с универсальными свойствами класса
Я хотел бы передать IQueryable и массив идентификаторов в метод, который фильтрует IQueryable на основе этих идентификаторов.
Поскольку идентификаторы могут быть как long, так и int, их следует решать в общем случае.
Я придумал следующее:
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)));
}
К сожалению, я получаю исключение:
LINQ to Entities не распознает метод метода System.Object GetValue (System.Object), и этот метод нельзя преобразовать в выражение хранилища.