2010-10-22 100 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