获取泛型列表中第一个属性的值

本文关键字:属性 第一个 泛型 列表 获取 | 更新日期: 2023-09-27 18:19:06

我想提取泛型列表中第一个属性的值。第一个属性总是Int32(不可为空)

列表示例

IEnumerable<T> items

每行第一个属性的值应该创建一个LinkedList<int>

有什么办法解决这个问题吗?

获取泛型列表中第一个属性的值

由于泛型类型的"first property"是将items转换为LinkedList的方法的调用者所知道的,因此调用者可以传递一个lambda,根据需要选择第一(第二,第三)项,如下所示:

public static LinkedList<V> ToLinkedList<T,V>(
    this IEnumerable<T> items, Func<T,V> selector
) {
    return new LinkedList<V>(items.Select(selector));
}

你可以这样调用这个方法:

LinkedList<int> res = items.ToLinkedList(item => item.FirstField);

这种方法使您避免通过引入不必要的接口来修改您的类,并且还允许使用第三方类。

尝试选择泛型元素的方法的返回类型

public static U GetElement<U>(List<U> sourcetype)
{  
 return (from source in sourcetype where source.GetType().GetProperties().Where(p => p.GetGetMethod().ReturnType == typeof(LinkedList<int>)).FirstOrDefault() != null select source).FirstOrDefault();
}

return可以为null…

问好。