Sign Up

Sign Up to our social questions and Answers Engine to ask questions, answer people’s questions, and connect with other people.

Have an account? Sign In

Have an account? Sign In Now

Sign In

Login to our social questions & Answers Engine to ask questions answer people’s questions & connect with other people.

Sign Up Here

Forgot Password?

Don't have account, Sign Up Here

Forgot Password

Lost your password? Please enter your email address. You will receive a link and will create a new password via email.

Have an account? Sign In Now

You must login to ask a question.

Forgot Password?

Need An Account, Sign Up Here

Please briefly explain why you feel this question should be reported.

Please briefly explain why you feel this answer should be reported.

Please briefly explain why you feel this user should be reported.

Sign InSign Up

The Archive Base

The Archive Base Logo The Archive Base Logo

The Archive Base Navigation

  • SEARCH
  • Home
  • About Us
  • Blog
  • Contact Us
Search
Ask A Question

Mobile menu

Close
Ask a Question
  • Home
  • Add group
  • Groups page
  • Feed
  • User Profile
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Buy Points
  • Users
  • Help
  • Buy Theme
  • SEARCH
Home/ Questions/Q 63055
In Process

The Archive Base Latest Questions

Editorial Team
  • 0
Editorial Team
Asked: May 10, 20262026-05-10T18:34:21+00:00 2026-05-10T18:34:21+00:00

I am parsing an Expression Tree. Given a NodeType of ExpressionType.MemberAccess, how do I

  • 0

I am parsing an Expression Tree. Given a NodeType of ExpressionType.MemberAccess, how do I get the value of that Field?

From C# MSDN docs: MemberAccess is A node that represents reading from a field or property.

A code snippet would be incredibly, incredibly helpful. Thanks in advance!!!

My code looks something like this:

public static List<T> Filter(Expression<Func<T, bool>> filterExp)  { //the expression is indeed a binary expression in this case BinaryExpression expBody = filterExp.Body as BinaryExpression;  if (expBody.Left.NodeType == ExpressionType.MemberAccess)    //do something with ((MemberExpressionexpBody.Left).Name  //right hand side is indeed member access. in fact, the value comes from //aspdroplist.selectedvalue             if (expBody.Right.NodeType == ExpressionType.MemberAccess) {    //how do i get the value of aspdroplist.selected value?? note: it's non-static                         }  //return a list } 
  • 1 1 Answer
  • 0 Views
  • 0 Followers
  • 0
Share
  • Facebook
  • Report

Leave an answer
Cancel reply

You must login to add an answer.

Forgot Password?

Need An Account, Sign Up Here

1 Answer

  • Voted
  • Oldest
  • Recent
  • Random
  1. 2026-05-10T18:34:22+00:00Added an answer on May 10, 2026 at 6:34 pm

    [updated for clarity]

    First; cast the Expression to a MemberExpression.

    A MemberExpression has two things of interest:

    • .Member – the PropertyInfo / FieldInfo to the member
    • .Expression – the expression to evaluate to get the ‘obj’ for the .Member

    i.e. if you can evaluate the .Expression to ‘obj’, and the .Member is a FieldInfo, then you can get the actual value via .GetValue(obj) on the FieldInfo (and PropertyInfo is very similar).

    The problem is that evaluating the .Expression is very tricky ;-p

    Obviously you get lucky if it turns out to be a ConstantExpression – but in most cases it isn’t; it could be a ParameterExpression (in which case you’ll need to know the actual parameter value that you want to evaluate), or any other combination of Expressions.

    In many cases, a simple (perhaps lazy) option is to use .Compile() to get the .NET framework to do the heavy lifting; you can then evaluate the lambda as a typed delegate (passing in any parameters that the lambda requires). This isn’t always an option, however.

    To show how complex this is; consider this trivial example (where I’ve hard-coded at every step, rather than testing etc):

    using System; using System.Linq.Expressions; using System.Reflection; class Foo {     public string Bar { get; set; } }  static class Program {     static void Main()     {         Foo foo = new Foo {Bar = 'abc'};         Expression<Func<string>> func = () => foo.Bar;          MemberExpression outerMember = (MemberExpression)func.Body;         PropertyInfo outerProp = (PropertyInfo) outerMember.Member;         MemberExpression innerMember = (MemberExpression)outerMember.Expression;         FieldInfo innerField = (FieldInfo)innerMember.Member;         ConstantExpression ce = (ConstantExpression) innerMember.Expression;         object innerObj = ce.Value;         object outerObj = innerField.GetValue(innerObj);         string value = (string) outerProp.GetValue(outerObj, null);         }  } 
    • 0
    • Reply
    • Share
      Share
      • Share on Facebook
      • Share on Twitter
      • Share on LinkedIn
      • Share on WhatsApp
      • Report

Sidebar

Related Questions

No related questions found

Explore

  • Home
  • Add group
  • Groups page
  • Communities
  • Questions
    • New Questions
    • Trending Questions
    • Must read Questions
    • Hot Questions
  • Polls
  • Tags
  • Badges
  • Users
  • Help
  • SEARCH

Footer

© 2021 The Archive Base. All Rights Reserved
With Love by The Archive Base

Insert/edit link

Enter the destination URL

Or link to existing content

    No search term specified. Showing recent items. Search or use up and down arrow keys to select an item.