2013-10-24 79 views
0

我想要做的是返回LinqtoSql DBML表對象中的所有列名稱,可以轉換爲List對象的任何形式顯示給用戶。WPF C#如何返回LinqtoSql dbml對象中的所有列的列表

原因是我有一個硬編碼的Xaml列定義的DxGrid,它只顯示dbml表列的一個子集。

我想允許用戶從當前不可見的其他列中進行選擇,從那裏我可以創建新的列對象並將選定的列添加到網格中的集合中。

任何幫助,將不勝感激,謝謝。

+0

歡迎StackOverflow上。按照我的愚見,看起來你對這個問題期望過高。請閱讀[我如何提出一個好問題]()幫助頁面,瞭解如何更好地提出更有針對性的問題,這將使您得到更好,更快的答案。 – Sheridan

回答

0

由於每個表列都由您的Linq2Sql類中的屬性表示,因此通過反射可以很容易地獲取它們的名稱。在Linq2Sql類的Type中,只需搜索用Linq的ColumnAttribute裝飾的屬性即可。

下面是一個數據庫表 「大廈」 的例子:

using System.Data.Linq.Mapping; 
... 
... 

var columnNames = typeof(Building) 
        .GetProperties() 
        .Where(p => p.GetCustomAttributes(typeof(ColumnAttribute), false).Any()) 
        .Select(p => p.Name) 
        .ToList(); 
+0

謝謝你,這對我需要的東西完美。 – ABruce

0

由於您仍然在一天結束時處理具體的對象類型,例如Northwind數據庫中的Product類,您可以使用反射來枚舉返回類型的公共屬性並以此方式創建列表。

var columnNames = typeof(Product).GetProperties().Select(pi => pi.Name).ToList(); 

從那裏您可以比較完整列表和硬編碼集。

+0

感謝您的答案,它確實得到了列表,但我必須將Sphinxxx標記爲正確的,因爲它們的解決方案還從查詢中的返回列表中刪除了dbml表關聯。 – ABruce

相關問題