C# 如何通过属性的名称调用属性的方法

C# 如何通过属性的名称调用属性的方法,c#,linq,C#,Linq,我想通过反射调用对象的属性方法。比如说, var query = DataContext().SomeTable.Where(u => u.UserID.contains("P"); 我尝试了以下方法,但没有成功: var query = DataContext().SomeTable.Where(u => u.GetType().GetProperty("UserID").Name.contains("P"); 返回null。请提供帮助。您必须获取u的值,然后在其上使用ToSt

我想通过反射调用对象的属性方法。比如说,

var query = DataContext().SomeTable.Where(u => u.UserID.contains("P");
我尝试了以下方法,但没有成功:

var query = DataContext().SomeTable.Where(u => u.GetType().GetProperty("UserID").Name.contains("P");

返回null。请提供帮助。

您必须获取u的值,然后在其上使用ToString:

当然,它有一点改进:检查GetValue是否不返回null等


注意:请记住,您可以在某处缓存从u.GetType.GetPropertyUserID获取的PropertyInfo,这样您就不必每次都调用它。

您必须获取u的值,然后使用ToString:

当然,它有一点改进:检查GetValue是否不返回null等

注意:请记住,您可以在某处缓存从u.GetType.GetPropertyUserID获得的PropertyInfo,这样您就不必每次都调用它。

您需要的,而不是名称

使用here只是为了确保在UserID为null时Contains不会引发异常

你想要的不是名字


使用here只是为了确保在UserID为null时Contains不会引发异常

非常感谢你的回答和建议。非常感谢你的回答和建议。
u.GetType().GetProperty("UserID").GetValue(u, null).ToString().Contains("P");
((string)u.GetType().GetProperty("UserID").GetValue(u) ?? "").Contains("P")