>>677
メンバに順序は無いので、何らかの手段で順序情報を付加してやる必要がある。
その上で、リフレクションを使って動的に値をセットする。
たとえばカスタム属性を使って以下のようにする。(動くかどうかは知らん)
public class OrderAttribute : Attribute {
 public Order(int value) { this.Value = value; }
 public int Value { get; private set; }
}
public class ListValue {
 [Order(0)] public string Col1 {get; set;}
 [Order(1)] public string Col2 {get; set;}
}
public static class TsvLoader {
 public static IEnumerable<ListValue> LoadFromFile<T>(string filename) =>
  File.ReadLines(filename)
   .Select(line => line.Split(‘¥t’))
   .Select(DeserializeRow);
 public static T DeserializeRow<T> where T : class, new() (IEnumerable<string> row) {
  var propvals = typeof(T).GetProperties()
   .OrderBy(prop => ((OrderAttribute)p.GetAttribute(typeof(OrderAttribute))).Value)
   .Zip(row, (prop, val) => new { Property = prop, Value = val });
  var obj = new T();
  foreach (var propval in propvals) { propval.Property.SetValue(obj, propval.Value); }
  return obj;
 }
}
こんなことするより素直に>>678の方がいいと思うけど