数组的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>();
    }

得到一个错误在返回…但是越来越近了。

数组的LINQ列表属性

使用非显式var类型,它将自动为您生成类型

var names = people.Select(x => x.PROPNAME).ToArray();

如果使用var关键字,类型将被推断:

var names = people.Select(x => x.PROPNAME).ToArray();