using System.Collections.Generic;
public static T CreateType<T>(List<T> list)where T : new ()
var properties = type.GetProperties();
foreach (var prop in properties)
var value = list.Select(x => x.GetType().GetProperties().First(y => y == prop).GetValue(x) as string).OrderByDescending(x => x.Length).First();
var propInstance = obj.GetType().GetProperties().First(x => x == prop);
propInstance.SetValue(obj, value);
public static void Main()
var someList = new List<SomeClass>()
{Name = "some value 1", Car = "Some value 2 longer"}, new SomeClass()
{Name = "some value 1 longer", Car = "Some value 2"}};
var mYtype = CreateType(someList);
Console.WriteLine(mYtype.Name + ", " + mYtype.Car);