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 fields = new List() { "Title", "Age" }; var persons = new List(); 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 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)); } } }