2011-11-16 42 views
1

我想在運行時找到ExpandoObject中的所有類型。如何查找由PetaPoco.Database.Query返回的IEnumerable <ExpandoObject>中的類型<dynamic>?

這裏的一些探索性的代碼:

using PetaPoco; 

... 

var data = _d.Query<dynamic>(_script); 
IDictionary<string, object> hood = (IDictionary<string, object>)data.First(); 
var wow = hood.Values.Where(x => x != null).Select(x => x.GetType().ToString()); 

Where方法步驟禮貌了在返回ExpandoObject空值...很難,因爲它依賴於即使在首位返回行的解決方案。

有沒有更好的方式來查詢PetaPoco.Database在構建ExpandoObject時學到什麼?

(回退是再次查詢數據庫的模式對象。)

回答

0

採取從this博客數據源creator.cs添加一些重載的System.Collections.Generic.IDictionary<TKey, TValue>。這將ilEmit新的類型,你可以探索,或者可能作爲一個彙編保存。 或者抓住從http://www.bodurov.com/files/DataSourceCreator.cs.zip

這將直接下載的是你會使用的東西出來PetaPoco

public static IEnumerable ToDataSource(this IEnumerable<IDictionary> list) 

,但使代碼添加重載與近完全相同的副本麪食的方法實現,但簽名

public static IEnumerable ToDataSource(this IEnumerable<IDictionary<string,object>> list) 

所以那麼你的調整,這個代碼將是

var hood=data.Cast<IDictionary<string,object>>().ToDataSource(); 
相關問題