using System.Collections.Generic;
using System.Linq.Expressions;
public static class MemberCollector
public static HashSet<string> GetMembers(Expression e)
var tmp = new InternalMemberCollector();
class InternalMemberCollector : ExpressionVisitor
public HashSet<string> FoundMembers = new HashSet<string>();
override protected Expression VisitMember (MemberExpression node)
FoundMembers.Add(node.Member.Name);
return base.VisitMember(node);
public static void Main(string[] args)
Expression<Func<DateTime, bool>> e = dt => dt.Hour == 12 && dt.Minute % 10 == 0;
foreach (var m in MemberCollector.GetMembers(e))