Получить значение FieldExpression в C#C#

Место общения программистов C#
Гость
Получить значение FieldExpression в C#

Сообщение Гость »


Я новичок в выражениях на C# и пытаюсь создать преобразователь из Expression в предложение SQL Where. Мне удалось это сделать, когда предоставленное выражение выглядит так

Expression predicate = p => p.Price > 100 && p.Category == "Электроника" && p.PriceTotal >= 200; В приведенном выше примере я могу разбить выражение на выражение-член и константное выражение и создать эквивалентное предложение SQL Where. Теперь я пытаюсь сделать то же самое -

public void GetWhereCluase(string CategoryName) { Предикат Expression = p => p.Category == CategoryName && p.PriceTotal >= 200; GetClause (предикат); } Но на этот раз правая часть — это FieldExpression, и я не знаю, как получить фактическое значение.

Я пытался скомпилировать Func, но безуспешно.
Гость
Re: Получить значение FieldExpression в C#

Сообщение Гость »

if (expr is MemberExpression mexp && mexp.Expression is ConstantExpression mce)
{
if (mexp.Member is FieldInfo fi)
res = fi.GetValue(mce.Value);
if (mexp.Member is PropertyInfo pi)
res = pi.GetValue(mce.Value);
}
if (expr is ConstantExpression ce && ce.Value != null)
res = ce.Value;

Вернуться в «C#»