数组的LINQ列表属性
本文关键字:属性 列表 LINQ 数组 | 更新日期: 2023-09-27 18:07:05
如果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>();
}
得到一个错误在返回…但是越来越近了。
使用非显式var类型,它将自动为您生成类型
var names = people.Select(x => x.PROPNAME).ToArray();
如果使用var关键字,类型将被推断:
var names = people.Select(x => x.PROPNAME).ToArray();