我想要做的是返回LinqtoSql DBML表對象中的所有列名稱,可以轉換爲List對象的任何形式顯示給用戶。WPF C#如何返回LinqtoSql dbml對象中的所有列的列表
原因是我有一個硬編碼的Xaml列定義的DxGrid,它只顯示dbml表列的一個子集。
我想允許用戶從當前不可見的其他列中進行選擇,從那裏我可以創建新的列對象並將選定的列添加到網格中的集合中。
任何幫助,將不勝感激,謝謝。
我想要做的是返回LinqtoSql DBML表對象中的所有列名稱,可以轉換爲List對象的任何形式顯示給用戶。WPF C#如何返回LinqtoSql dbml對象中的所有列的列表
原因是我有一個硬編碼的Xaml列定義的DxGrid,它只顯示dbml表列的一個子集。
我想允許用戶從當前不可見的其他列中進行選擇,從那裏我可以創建新的列對象並將選定的列添加到網格中的集合中。
任何幫助,將不勝感激,謝謝。
由於每個表列都由您的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();
謝謝你,這對我需要的東西完美。 – ABruce
由於您仍然在一天結束時處理具體的對象類型,例如Northwind數據庫中的Product類,您可以使用反射來枚舉返回類型的公共屬性並以此方式創建列表。
var columnNames = typeof(Product).GetProperties().Select(pi => pi.Name).ToList();
從那裏您可以比較完整列表和硬編碼集。
感謝您的答案,它確實得到了列表,但我必須將Sphinxxx標記爲正確的,因爲它們的解決方案還從查詢中的返回列表中刪除了dbml表關聯。 – ABruce
歡迎StackOverflow上。按照我的愚見,看起來你對這個問題期望過高。請閱讀[我如何提出一個好問題]()幫助頁面,瞭解如何更好地提出更有針對性的問題,這將使您得到更好,更快的答案。 – Sheridan