FOREACH (WHERE X => X.PROPERTY), HOW TO SET PROPERTY?

Jeet Verma

Total Post:110

Points:776
Posted by  Jeet Verma
C# 
C#
 1516  View(s)
Ratings:
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

  1. Pravesh Singh

    Post:412

    Points:2888
    Re: foreach (where x => x.PROPERTY), how to set PROPERTY?

    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)

      Modified On Apr-04-2018 06:05:09 AM

Answer

NEWSLETTER

Enter your email address here always to be updated. We promise not to spam!