【问题标题】:Dynamic Linq - no property or field exists in type 'datarow'动态 Linq - 'datarow' 类型中不存在任何属性或字段
【发布时间】:2011-08-04 20:34:57
【问题描述】:

我正在使用 Northwind 客户表来填充数据集并获取数据表。

我正在尝试使用动态 linq 并希望动态选择 columnName

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

现在我对国家/地区进行了硬编码,但即便如此我也会收到此错误

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

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

请帮忙!!!谢谢。

【问题讨论】:

  • 您可以通过单击答案旁边的复选标记来表明 Slauma 提供了正确的答案。

标签: dynamic-linq


【解决方案1】:

重要提示在这里(粗体):

不存在“国家/地区”属性或字段 在输入“数据行”

DataTable 类的扩展方法AsEnumerable 返回一个IEnumerable<T>,其中T 的类型为DataRow。现在动态 LINQ 的 Select 方法想要使用这个 type DataRow 当然没有 property Country

你可以试试这个:

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

it 现在表示DataRow 类型的变量,您可以使用这种类型的方法,也许还可以使用我上面示例中的索引器。 (动态 LINQ 支持通过整数索引访问数组元素,但我不确定是否可以使用字符串键访问索引器。)

【讨论】:

  • 非常感谢我只需要使用 as
  • var qry = MyDataTable.AsEnumerable().AsQueryable() .Select("new(it[\"Country\"]) as CountryAlias");
  • 是的,我也刚刚看到as 是必要的。我会编辑我的答案来纠正这个问题。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-03-07
  • 1970-01-01
  • 1970-01-01
  • 2016-07-28
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多