c# - Pass list of object properties to be used to form a new object inside a LINQ query -


sounds little complex here trying do:

i filtering properties of myobject in list<myobject> new linq object as:

 var filteredmyobjects = r in myobjects select new { r.componentname, r.group, r.key }; 

the problem properties componentname, group , key should come input (for example list<string> of property names). used in logic exporting data excel.

i have been trying combine idea:

typeof(myobject).getproperty(property).getvalue(objectinstance) string 

but cannot wrap head around how implement it.

edit:

see example of need achieve:

list<string> userdefinedpropeties = new list<string> {property1, property2, property3 ... }  var filteredmyobjects = r in myobjects select new { r.property1, r.property2, r.property3 ... }; 

ideal answer this, except solution not work in case: linq access property variable

you can't use anonymous object this, best bet use expando object

//list<string> userdefinedpropeties parameter list<dynamic> filteredmyobjects = new list<dynamic>(); foreach (var in filteredmyobjects) {      dynamic adding = new expandoobject();     foreach (var prop in userdefinedpropeties)      {         adding[prop] = i.gettype().getproperty(prop).getvalue(i);     }      filteredmyobjects.add(adding);  }  // of elements of filtered list can accessed using  // item.`propertyname` 

also better way phrase question want pass object contains properties user requested, not sure why ui wouldn't able handle more properties requested, have explained don't have control on design


Comments