using System.Collections.Generic;
using System.ComponentModel;
using System.Linq.Expressions;
using DataTableGenerator;
public Product(int id, string name, string address)
public int Id { get; set; }
public string Name { get; set; }
public string Address { get; set; }
public static class DataProvider
public static IEnumerable<Product> GenerateProducts()
new Product(1, "Phone", "Street 01"),
new Product(2, "Glass", "Street 02"),
new Product(3, "Mouse", "Street 03")
public static void Main()
var products = DataProvider.GenerateProducts();
var dataTableOverload01 = products.ToDataTable();
var dataTableOverload03 = products.ToDataTable((Product p) => p.Name, p => p.Address);
var dataTableOverload05 = products.ToDataTable(GetMembers());
catch (System.Exception e)
private static MemberInfo[] GetMembers()
return new Product().GetType().GetMembers();