Подтвердить что ты не робот

Свойство списка LINQ для массива?

Какой лучший способ сделать это, когда 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>();
    }

Получил ошибку в возвращении... но приблизился. Все в порядке, но немного грязнее, чем я надеялся.

4b9b3361

Ответ 1

Используя неявный тип var, он автоматически генерирует тип для вас

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

Ответ 2

Тип будет выведен, если вы используете ключевое слово var:

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