richard richard -4 years ago 109
C# Question

dynamic property name

I'm trying to write a linq query that takes a dynamic property name. So for example, if the property name is 'test', a simple query would look like this:

var test = testList.Select(x => x.test).Distinct().ToList();


But I want to dynamically generate the property name, eg:

var propertyName = "test";

var test = testList.Select(x => x.propertyName).Distinct().ToList();


I get an error because 'propertyName' isn't an actual property.

What would be the best way to achieve this?

Answer Source

You'd have to use reflection to do what you're trying to do:

var test = testList
               .Select(x => x.GetType().GetProperty(propertyName).GetValue(x))
               .Distinct()
               .ToList();
Recommended from our users: Dynamic Network Monitoring from WhatsUp Gold from IPSwitch. Free Download