我想提取通用列表中第一个属性的值。第一个属性始终是 Int32(不可为空)
列表示例
IEnumerable<T> items
每行中第一个属性的值应该创建一个LinkedList<int>
任何想法如何解决这个问题?
我想提取通用列表中第一个属性的值。第一个属性始终是 Int32(不可为空)
列表示例
IEnumerable<T> items
每行中第一个属性的值应该创建一个LinkedList<int>
任何想法如何解决这个问题?
尝试选择泛型元素方法的重新调整类型
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();
}
返回可以为空...
此致。
由于泛型类型的“第一个属性”对于将您转换为的方法的调用者来说是已知的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);
这种方法可以让您避免通过引入不必要的接口来修改您的类,并且还允许使用第三方类。