我想提取通用列表中第一个属性的值。 第一个属性始终是Int32(不可为空)
列表示例
IEnumerable<T> items
每行中第一个属性的值应创建LinkedList<int>
任何想法如何解决这个问题?
答案 0 :(得分:1)
由于泛型类型的“第一个属性”是将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);
这种方法可以避免通过引入不必要的接口来修改类,并允许使用第三方类。
答案 1 :(得分:1)
尝试选择泛型元素
方法的返回类型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 ...
最诚挚的问候。