获取泛型列表中第一个属性的值
本文关键字:属性 第一个 泛型 列表 获取 | 更新日期: 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…
问好。