请问PROPNAME
可能是T
类型的任何财产吗?用反射来构建它,还是有一个很好的LINQ方法来做到这一点?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>();
}
得到了在返回一个错误......但越来越近。没关系,但是比我希望的有点混乱。
你一个阵列中后“人”的财产名称? –
您是否试图制作可重用的代码片段,您可以在其中指定任何属性并获取字符串表示形式的集合? – Tejs
情况是有很多属性的大型poco对象,并且API希望一次只能看到一列,而不是一次一行。 – sgtz