我有一个对象学生,我通过下面的这种方法获得属性的值之一

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的实际值,或者什么其他方法对我有用?

谢谢

最佳答案

由于propValuePropertyInfo对象,因此您需要使用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"))

08-18 09:58