2013-03-13 72 views
0
的IDataSource我

創建以下anonymous type如何匿名類型轉換爲IListSource,IEnumerable的,或

int group_id = 0; 
    int dep_code = 0; 
    int dep_year = 0; 
    string dep_name = string.Empty; 
    int boss_num = 0; 
    string boss_name = string.Empty; 
    var list = new { group_id = group_id, dep_code = dep_code, dep_year = dep_year, dep_name = dep_name, boss_num = boss_num, boss_name = boss_name }; 

如何轉換爲IListSource, IEnumerable, or IDataSource. ??

+1

那麼你怎麼想它是序列?單一的價值? – 2013-03-13 10:56:52

+0

這將是我的'formview'的數據源 – 2013-03-13 10:57:38

+0

爲什麼你想讓你的數據源'匿名'?只要聲明一個類 - 一個繼承你的代碼的開發人員可能知道你住在哪裏;-) – 2013-03-13 10:59:44

回答

3

如果你只是希望創建一個單一的價值序列,您可以使用一個隱式類型數組:

int group_id = 0; 
int dep_code = 0; 
int dep_year = 0; 
string dep_name = string.Empty; 
int boss_num = 0; 
string boss_name = string.Empty; 
var list = new[] { 
    new { group_id, dep_code, dep_year, dep_name, boss_num, boss_name } 
}; 

注意,這裏使用投影初始化其中屬性名稱是從推斷表達。

我會強烈鼓勵您爲變量使用常規名稱,例如groupId。此外,還不清楚dep在這裏的含義 - 如果這是一個縮寫,則可能需要將其擴大以便清晰。

1

基於對我的問題的一些原始的海報的評論,問題是關於.NET Framework 3.5的。我自己重新標記了這個問題。 無論如何,我在這裏留下這個答案,因爲它可能在未來的原始海報,也爲未來的遊客有用。


而不是使用匿名對象的,你爲什麼不使用ExpandoObject

dynamic list = new ExpandoObject(); 
list.group_id = group_id; 
list.dep_code = dep_code; 
// ... and so on. 

一個偉大的細節是ExpandoObject實現IDictionary<string, object>,和賓果:IDictionary<string, object>將有Values屬性,它實現了IEnumerable<T>

IEnumerable<object> items = ((IDictionary<string, object>)list).Values; 

更新

因爲我看到喬恩斯基特的答案是爲您正確的,我想你要找的匿名對象的列表,而不是一個匿名對象變成「枚舉」從你的問題中知道什麼對你有好處並不容易......我不會刪除我的答案,所以其他任何尋找類似我的第一個理解的訪問者仍然可以找到我的答案非常有用)。

現在,理解你的問題更好的,你可以這樣做也:

// Create a list of objects and you got it! 
List<object> list = new List<object>(); 
list.Add(new { group_id, dep_code, dep_year, dep_name, boss_num, boss_name }); 
+0

非常感謝,但我使用框架3.5 :( – 2013-03-13 11:06:36

+1

@just_name你需要**正確**標記你的問題然後。約3.5版本! – 2013-03-13 11:07:14

+0

對不起,我沒有聽說過'ExpandoObject'之前,我google它時,它提到它在你的答案.really謝謝很多:) – 2013-03-13 11:14:25

相關問題