using System.Collections.Generic;
public int PropertyInA {get;set;}
public int PropertyInB {get;set;}
public int PropertyInC {get;set;}
public static IEnumerable<string> GenerateQueries(object obj)
var queries = new List<string>();
Type curType = obj.GetType();
while(curType != typeof(object))
var props = curType.GetProperties(System.Reflection.BindingFlags.Public
| System.Reflection.BindingFlags.Instance
| System.Reflection.BindingFlags.DeclaredOnly);
queries.Add("INSERT INTO table1(" + string.Join(",", props.Select(x => x.Name)) + ") VALUES (" + string.Join(",", props.Select(x => x.GetValue(obj))) +")");
curType = curType.BaseType;
public static void Main()
myObject.PropertyInA = 0;
myObject.PropertyInB = 1;
myObject.PropertyInC = 2;
Console.WriteLine(string.Join(Environment.NewLine, GenerateQueries(myObject)));