Я не являюсь мастером дерева выражений в любом воображении, у меня есть код, который выглядит следующим образом:
int external = 10;
using(var session = new Session())
{
session.Add(new Product { Name = "test1", Price = 20 });
session.Add(new Product {Name = "test", Price = 10});
var product = session.Products.Where(p => p.Price == external).FirstOrDefault();
Assert.Equal(10, product.Price);
}
В Session реализованы все интерфейсы IQueryProvider, IQueryable, которые можно ожидать от поставщика LINQ.
Когда я оцениваю дерево выражений, все идет по плану, пока я не прочитал ConstantExpression для «external», и в этот момент я не могу понять, как двигаться вперед, потому что:
//constant is ConstantExpression for "external" on the right side of the "p.Price == external" expression above.
var t = constant.GetType(); //evaluates to class called "<>c__DisplayClass2" - with a member named "external" that has the value 10.
Вопрос в основном .. Как я могу просто получить доступ к значению члена "внешний" - есть ли способ сделать это без использования отражения? или я готовлю? Чего мне не хватает?