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

本文关键字:LINQ 属性 读取 字符串 何仅使 | 更新日期: 2023-09-27 18:08:03

我有一个字段(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();

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

我认为获取属性的属性(例如User.Contact.PhoneNumber)可能会很困难。你需要嵌套PropertyExpressions,语句的深度有多大就有多大。

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