Home > DeveloperSection > Forums > foreach (where x => x.PROPERTY), how to set PROPERTY?
Jeet Verma
Jeet Verma

Total Post:110

Points:776
Posted on    August-19-2014 3:21 AM

 C# C# 
Ratings:


 1 Reply(s)
 984  View(s)
Rate this:

I have an Object Student, I get one of the property's values by this method below

System.Reflection.PropertyInfo propValue = typeof(Student).GetProperty(s);

Let's say that s (the string I passed into the GetProperty) was the property called "StudentName". I would then like to run a search based off that property, which was stored in propValue, such as:

foreach (Student stu in formStudents.Where(x => x.propValue == "John"))

However this does not work, as x.__ only fills in with properties of Student (even though valueProp contains a valid property of Student).

How can I override this so that is reads propValue as an actual value of student, or what other method will work for me?

Thank you



Pravesh Singh

Total Post:411

Points:2881
Posted on    August-19-2014 3:39 AM

Hi Jeet, 

You call the .GetValue(...) method of the PropertyInfo object you got back from .GetProperty(s):

foreach (Student stu in formStudents)

{

    var value = (string)propValue.GetValue(stu);

    if (value == "John")

    {

        ....

    }

}

You can rewrite to LINQ if you want to:

var matchingStudents =

    from stu in formStudents

    let propertyValue = (string)propValue.GetValue(stu)

    where propertyValue == "John";

    select stu;

foreach (var student in matchingStudents)


Don't want to miss updates? Please click the below button!

Follow MindStick