我想通过反思来调用属性的对象方法。例如,
var query = DataContext().SomeTable.Where(u => u.UserID.contains("P");
我尝试过以下但没有运气:
var query = DataContext().SomeTable.Where(u => u.GetType().GetProperty("UserID").Name.contains("P");
返回null。请帮忙。
答案 0 :(得分:3)
您必须获取u
的值,然后在其上使用ToString
:
u.GetType().GetProperty("UserID").GetValue(u, null).ToString().Contains("P");
当然它有一点改进:检查GetValue
是否不返回null
等。
注意:请记住,您可以在某处缓存从PropertyInfo
获取的u.GetType().GetProperty("UserID")
,这样您就不必每次都调用它。
答案 1 :(得分:3)
您需要GetValue,而不是Name
((string)u.GetType().GetProperty("UserID").GetValue(u) ?? "").Contains("P")
如果Contains
为UserID
,则?? operator的使用只是确保null
不会抛出异常的保障措施。