2013-08-30 50 views
3

,如果我有這樣的事情我可以使用反射來自EF類SqlQuery獲取值名稱和值

var result = db.Database.SqlQuery<object>("SELECT GroupID, GoupName, GroupValue FROM Group").ToList(); 

,你可以看到我使用的對象,因爲我沒有一個具體的類,我可以把它綁定到。

有沒有什麼方法可以從結果中獲得列的信息和值。

我嘗試使用反射和沒有工作

Type type = result.GetType(); 
FieldInfo[] fields = type.GetFields(); 
foreach (var field in fields) // Loop through fields 
{ 
    string name = field.Name; 
} 

有沒有辦法做到這一點感謝

+0

總而言之,還沒有嘗試過......如果你GetProperties而不是字段它工作嗎?你也可以嘗試一些綁定標誌。再次,如果我對此有任何確定,我會給出一個答案而不是評論! –

+0

我也嘗試過,它和字段一樣 –

回答

2

看起來不像有辦法做到這一點 - 一件事,你result ISN不是一個對象,而是一個InternalSqlNonSetQuery,它包含一組對象。在你的情況下,因爲你的通用參數是object,你將得到完全空的對象,沒有參數。

我希望Dictionary<string, object>會工作,但沒有這樣的運氣。

如果您事先知道字段名稱和類型,即使您沒有在代碼中定義類型,也可以使用here找到的技術在運行時定義類型,但這可能不是您要的尋找。 (如果這個鏈接永遠消失了,基本上它正在使用Reflection Emit構建一個全新的類型,並將它用作結果類型,但它並不是一小瑣碎的代碼)。

相關問題