2010-10-22 90 views
0

我在实体框架中使用存储过程。比方说,我有一个过程:C#ObjectResult的扩展方法<T>?

public static int DoSth(decimal id) 
    { 
     return (int)Adapter.my_proc(id).First(); 
    } 

,因为我不希望得到的第一个()元素,然后将它转换为(INT),每次我想有一个扩展方法,这样做对我(获得第一个元素,然后把它作为T)。它会是什么样子?

回答

3

我不知道我明白你的问题是什么。下面是简单扩展方法的代码,它需要ObjectResult<T>,获取集合的第一个元素并将其转换为T(将该方法放在单独的静态类中)。

public static T Fetch<T>(this ObjectResult<T> result) 
{ 
    return (T)result.First(); 
} 

然后你可以这样调用它:

public static int DoSth(decimal id) 
{ 
    return Adapter.my_proc(id).Fetch<int>(); 
} 

是你在想什么?

+0

我已经试过了,但是在那个扩展方法中编译器不知道“T”是什么 – Tony 2010-10-22 09:05:21

+0

当然,它不在以前的版本。代码编辑,现在它应该工作。 – NOtherDev 2010-10-22 09:45:44