在PROPNAME
可以是T
类型的任何属性的情况下,最好的方法是什么?用反射构建它,还是有一个很好的LINQ方法呢?
T[] vals = people.Select(x => x.PROPNAME).ToArray<T>();
这是我到目前为止所做的最好的事情:
public T[] ConvertListCol<TFrom,T>(IEnumerable<TFrom> list, string col)
{
var typ = typeof (TFrom);
var props = typ.GetProperties();
var prop = (from p in props where p.Name == col select p).FirstOrDefault();
var ret = from o in list select prop.GetValue(o, null);
return ret.ToArray<T>();
}
在回报中遇到错误......但越来越近了。没关系,但比我希望的更麻烦。
答案 0 :(得分:24)
使用非显式var类型,它会自动为您生成类型
var names = people.Select(x => x.PROPNAME).ToArray();
答案 1 :(得分:7)
如果使用var关键字,将推断出类型:
var names = people.Select(x => x.PROPNAME).ToArray();