Выражение может быть уменьшено до нескольких выражений.
var body = query.Body as BinaryExpression;
if (body != null)
{
var left = body.Left as MemberExpression;
if (left != null)
{
Console.WriteLine(left.Member.Name);
// You can get "Username" or "Email" here
}
}
Кстати, я думаю, что вы не в том направлении.Подумайте об этой ситуации: какой-то другой разработчик видит ваш GetUser
метод, используя его таким образом:
var result = GetUser(u => u.Email.Equals("abc@foo.com")); //or
var another = GetUser(u => u.Username.Contains("bar"));
Он подумает, что он прав, но на самом деле ваш метод не даст его идеального результата!Ну, вы можете сказать: «Не берите в голову, я сообщу им об этом изменении», но как насчет дней после того, как вы покинули эту команду / компанию?Это кошмар, если метод не ведет себя так, как его объявление.