I am trying to make a function that adds a "where" clause to a query based on property and value. This is a very simple version of my function.
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
Error message: LINQ to Entities does not recognize the method 'System.Object CompareObjectEqual (System.Object, System.Object, Boolean)', and this method cannot be translated into a storage expression.
It seems like it cannot use GetValue inside the linq query. Can I achieve this differently?
Post your answer in C # / VB. Choose the one that makes you feel more comfortable.
thanks
EDIT : I also tried this code with the same results
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
source share