我有一个对象学生,我通过下面的这种方法获得属性的值之一
System.Reflection.PropertyInfo propValue = typeof(Student).GetProperty(s);
假设s(我传递给GetProperty的字符串)是名为“ StudentName”的属性。然后,我想基于该属性运行搜索,该属性存储在propValue中,例如:
foreach (Student stu in formStudents.Where(x => x.propValue == "John"))
但是,这不起作用,因为x .__仅填充Student的属性(即使valueProp包含Student的有效属性)。
我该如何覆盖它,以便将propValue读取为Student的实际值,或者什么其他方法对我有用?
谢谢
最佳答案
由于propValue
是PropertyInfo
对象,因此您需要使用GetValue
方法
foreach (Student stu in formStudents.Where(x => ((string)propValue.GetValue(x, null)) == "John"))
但是,从问题的描述来看,似乎您可以通过查看Dynamic Linq库(在NuGet上也可用)来简化生活:
using System.Linq.Dynamic;
...
foreach (Student stu in formStudents.Where("StudentName = @0", "John"))