我正在使用Northwind Customers Table填充数据集并获取数据表。
我正在尝试使用动态linq并想要动态选择columnName
var qry = MyDataTable.AsEnumerable().AsQueryable().Select("new(Country)");
现在我有硬编码国家,但即使这样我也会收到此错误
No property or field 'Country' exists in type 'datarow'
我想最终更改此查询以动态获取列名。
请帮忙!!!感谢。
答案 0 :(得分:4)
重要提示在这里(粗体):
不存在任何属性或字段“国家/地区” 在类型'datarow'
中
AsEnumerable
类的扩展方法DataTable
返回IEnumerable<T>
,其中T的类型为DataRow
。现在,动态LINQ的Select
方法想要使用当前没有属性 DataRow
的类型 Country
。
您可以尝试这样做:
var qry = MyDataTable.AsEnumerable().AsQueryable()
.Select("new(it[\"Country\"] as CountryAlias)");
it
现在代表DataRow
类型的变量,您可以使用此类型的方法,也可以使用上面示例中的索引器。 (动态LINQ支持通过整数索引访问数组元素,但我不确定访问带有字符串键的索引器是否有效。)