Acesse o valor de uma expressão de membro

Se eu tiver um produto.

var p = new Product { Price = 30 };

e eu tenho a seguinte consulta linq.

var q = repo.Products().Where(x=>x.Price == p.Price).ToList()

Em um provedor IQueryable, recebo uma MemberExpression de volta para o p.Price que contém uma expressão constante, no entanto, não consigo recuperar o valor "30".

Atualizar Eu tentei isso, mas parece não funcionar.

var memberExpression = (MemberExpression)GetRootConstantExpression(m);
var fi = (PropertyInfo)memberExpression.Member;
var val = fi.GetValue(((ConstantExpression)memberExpression.Expression).Value, null);

Felicidades.

questionAnswers(8)

yourAnswerToTheQuestion