using System;
using System.Collections.Generic;
using System.Linq;
using System.Reflection;
public class Test
{
public class Person
{
public string Title{get;set;}
public string Name{get;set;}
public Int32 Age{get;set;}
}
public static void Main()
{
List<String> fields = new List<String>()
{
"Title",
"Age"
};
var persons = new List<Person>();
persons.Add(new Person { Title = "A1", Age = 10 });
persons.Add(new Person { Title = "A2", Age = 20 });
persons.Add(new Person { Title = "A3", Age = 30 });
//Populate persons
IEnumerable<PropertyInfo> properties = typeof(Person)
.GetProperties(BindingFlags.Public | BindingFlags.Instance)
.Where(p => fields.Contains(p.Name));
foreach (Person person in persons)
{
foreach (PropertyInfo prop in properties)
Console.WriteLine("{0}: {1}", prop.Name, prop.GetValue(person, null));
}
}
}
dXNpbmcgU3lzdGVtOwp1c2luZyBTeXN0ZW0uQ29sbGVjdGlvbnMuR2VuZXJpYzsKdXNpbmcgU3lzdGVtLkxpbnE7CnVzaW5nIFN5c3RlbS5SZWZsZWN0aW9uOwoKcHVibGljIGNsYXNzIFRlc3QKewogICAgcHVibGljIGNsYXNzIFBlcnNvbgogICAgewogICAgICAgIHB1YmxpYyBzdHJpbmcgVGl0bGV7Z2V0O3NldDt9CiAgICAgICAgcHVibGljIHN0cmluZyBOYW1le2dldDtzZXQ7fQogICAgICAgIHB1YmxpYyBJbnQzMiBBZ2V7Z2V0O3NldDt9CiAgICB9CiAgCglwdWJsaWMgc3RhdGljIHZvaWQgTWFpbigpCgl7CiAgICAgICAgICAgIExpc3Q8U3RyaW5nPiBmaWVsZHMgPSBuZXcgTGlzdDxTdHJpbmc+KCkKICAgICAgICAgICAgewogICAgICAgICAgICAgICAgIlRpdGxlIiwKICAgICAgICAgICAgICAgICJBZ2UiCiAgICAgICAgICAgIH07CiAgICAgICAgICAgIAogICAgICAgICAgICB2YXIgcGVyc29ucyA9IG5ldyBMaXN0PFBlcnNvbj4oKTsKICAgICAgICAgICAgcGVyc29ucy5BZGQobmV3IFBlcnNvbiB7IFRpdGxlID0gIkExIiwgQWdlID0gMTAgfSk7CiAgICAgICAgICAgIHBlcnNvbnMuQWRkKG5ldyBQZXJzb24geyBUaXRsZSA9ICJBMiIsIEFnZSA9IDIwIH0pOwogICAgICAgICAgICBwZXJzb25zLkFkZChuZXcgUGVyc29uIHsgVGl0bGUgPSAiQTMiLCBBZ2UgPSAzMCB9KTsKCiAgICAgICAgICAgIC8vUG9wdWxhdGUgcGVyc29ucwoKICAgICAgICAgICAgSUVudW1lcmFibGU8UHJvcGVydHlJbmZvPiBwcm9wZXJ0aWVzID0gdHlwZW9mKFBlcnNvbikKICAgICAgICAgICAgICAgIC5HZXRQcm9wZXJ0aWVzKEJpbmRpbmdGbGFncy5QdWJsaWMgfCBCaW5kaW5nRmxhZ3MuSW5zdGFuY2UpCiAgICAgICAgICAgICAgICAuV2hlcmUocCA9PiBmaWVsZHMuQ29udGFpbnMocC5OYW1lKSk7CgogICAgICAgICAgICBmb3JlYWNoIChQZXJzb24gcGVyc29uIGluIHBlcnNvbnMpCiAgICAgICAgICAgIHsKICAgICAgICAgICAgICAgIGZvcmVhY2ggKFByb3BlcnR5SW5mbyBwcm9wIGluIHByb3BlcnRpZXMpCiAgICAgICAgICAgICAgICAgICAgQ29uc29sZS5Xcml0ZUxpbmUoInswfTogezF9IiwgcHJvcC5OYW1lLCBwcm9wLkdldFZhbHVlKHBlcnNvbiwgbnVsbCkpOwogICAgICAgICAgICB9Cgl9Cn0=