动态Linq - 类型'datarow'中不存在属性或字段

时间:2011-04-13 15:55:48

标签: dynamic-linq

我正在使用Northwind Customers Table填充数据集并获取数据表。

我正在尝试使用动态linq并想要动态选择columnName

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

现在我有硬编码国家,但即使这样我也会收到此错误

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

我想最终更改此查询以动态获取列名。

请帮忙!!!感谢。

1 个答案:

答案 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支持通过整数索引访问数组元素,但我不确定访问带有字符串键的索引器是否有效。)