2011-07-25 87 views
1

我正在創建一個網格視圖用戶控件,我想知道如何從LinQ結果集中獲取列數和列名。這將用於創建動態網格視圖。從LinQ結果集獲取列和列名的數量

我這裏是一類與此:

var myPerson = from persons in myLinQ.SamplePersons 
       select persons; 

而在我的網格視圖,它具有這個屬性接收結果集。

public IEnumerable<Object> SourceLinQ { get; set; } 

有沒有辦法做到這一點?

回答

2

怎麼是這樣的:

var resultType = 
    query.GetType() 
     .GetInterfaces() 
     .Where(x => x.IsGenericType && 
        x.GetGenericTypeDefinition() == 
         typeof(IEnumerable<>) 
     ) 
     .Single() 
     .GetGenericArguments() 
     .Single(); 

然後:

var columns = resultType.GetProperties(); 
int numberOfColumns = columns.Length; 
string[] columnNames = columns.Select(column => column.Name) 
           .ToArray(); 

這是未經測試的,我甚至不知道是否編譯(我沒有編譯器方便好用現在,很抱歉)。

+0

您好!第一個代碼只是要傳遞的結果集的一個示例。所以,舉個例子,我不知道要傳遞什麼查詢。 – Musikero31

+0

@Musikero:你讀過代碼嗎?這是完全一般的。 – jason