如何只使用字符串读取LINQ的属性?

时间:2014-06-11 13:28:17

标签: c# linq reflection

我有一个字段(HTML输入文本),我的用户可以在其中输入他想要的属性名称,例如:“name”。有了这个值,我需要在我的对象上返回属性Name的值。 顺便说一句,我必须实现一个深度属性,如User.Contact.PhoneNumber,如果用户键入Contact.PhoneNumber。我能这样做吗?

我正在使用LINQ,因此对象User是延迟加载的。必须或尚未加载属性Contact。

这就是我现在正在尝试的事情:

ParameterExpression input = Expression.Parameter(typeof(User));
var expr = Expression.Property(input, typeof(User).GetProperty("Name"));
var justatest = Expression.Lambda<Func<User, string>>(expr, input).Compile();

1 个答案:

答案 0 :(得分:1)

我认为获取属性的属性,例如User.Contact.PhoneNumber可能会变得困难。您需要在语句的范围内使用嵌套的PropertyExpressions。

也许动态linq库会让你更容易: http://www.nuget.org/packages/System.Linq.Dynamic/