Я пытаюсь создать функцию, которая добавляет предложение 'where' к запросу на основе свойства и значения.Это очень простая версия моей функции.
Private Function simplified(ByVal query As IQueryable(Of T), ByVal PValue As Long, ByVal p As PropertyInfo) As ObjectQuery(Of T)
query = query.Where(Function(c) DirectCast(p.GetValue(c, Nothing), Long) = PValue)
Dim t = query.ToList 'this line is only for testing, and here is the error raise
Return query
End Function
Сообщение об ошибке: LINQ to Entities не распознает метод System.Object CompareObjectEqual (System.Object, System.Object, Boolean).и этот метод не может быть переведен в выражение хранилища.
Похоже, вы не можете использовать GetValue внутри запроса linq.Могу ли я добиться этого другим способом?
Опубликовать свой ответ в C # / VB.Выберите тот, который заставляет вас чувствовать себя более комфортно.
Спасибо
РЕДАКТИРОВАТЬ : я также пробовал этот код с теми же результатами
Private Function simplified2(ByVal query As IQueryable(Of T))
query = From q In query
Where q.GetType.GetProperty("Id").GetValue(q, Nothing).Equals(1)
Select q
Dim t = query.ToList
Return query
End Function