Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

dynamic property name in linq

Tags:

c#

lambda

linq

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?

like image 969
richard Avatar asked Mar 22 '17 16:03

richard


1 Answers

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();
like image 165
itsme86 Avatar answered Nov 05 '22 19:11

itsme86