获取通用列表中第一个属性的值

时间:2013-06-20 09:51:05

标签: c#

我想提取通用列表中第一个属性的值。 第一个属性始终是Int32(不可为空)

列表示例

IEnumerable<T> items

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

任何想法如何解决这个问题?

2 个答案:

答案 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 ...

最诚挚的问候。