2011-04-13 49 views
0

我使用Northwind Customers Table來填充數據集並獲取數據表。動態Linq - 在'datarow'類型中不存在屬性或字段

我試圖使用動態LINQ和想選擇COLUMNNAME動態

var qry = MyDataTable.AsEnumerable().AsQueryable().Select("new(Country)"); 

現在我有硬編碼的國家,但即使如此,我得到這個錯誤

No property or field 'Country' exists in type 'datarow' 

我希望最終更改此查詢以動態獲取列名稱。

請幫忙!!!謝謝。

+3

您可以通過單擊答案旁邊的複選標記來指出Slauma提供了正確的答案。 – 2011-04-13 18:03:25

回答

4

重要的提示是在這裏(粗體):

無屬性或字段 '國家' 存在 在 '數據行' 的DataTable

擴展方法AsEnumerable返回一個IEnumerable<T>,其中T的類型爲DataRow。現在動態LINQ的Select方法想要使用這個類型DataRow其中還沒有屬性Country當然。

你可以代替試試這個:

var qry = MyDataTable.AsEnumerable().AsQueryable() 
    .Select("new(it[\"Country\"] as CountryAlias)"); 

it現在代表DataRow類型的變量,你可以使用這種類型的方法,或許也是在我上面的例子中,索引器。 (動態LINQ支持通過整數索引訪問數組元素,但我不確定使用字符串鍵訪問索引器是否可行。)

+0

非常感謝你我只是用作 – Graci 2011-04-13 16:42:43

+0

var qry = MyDataTable.AsEnumerable()。AsQueryable() .Select(「new(it [\」Country \「])as CountryAlias」); – Graci 2011-04-13 16:43:49

+0

是的,我也剛剛看到'as'是必要的。我會編輯我的答案以糾正錯誤。 – Slauma 2011-04-13 16:46:08

相關問題