0

尝试从 dt 中选择不同的行,并将结果放回相同的 dt。我认为这可以在一个声明中完成。这是我正在尝试的:

    dt = (DataTable)((from row in dt.AsEnumerable() select row.Field<string>("VNDR_ID")).Distinct().ToList());

我怎样才能做到这一点?谢谢。

4

3 回答 3

1

LINQ 语句

(from row in dt.AsEnumerable() select row.Field<string>("VNDR_ID")).Distinct()

返回IEnumerable<string>not DataTable,因此强制转换将失败。

您是否有理由需要将结果放入另一个中DataTable?我只是使用IEnumerable查询返回的值,或者如果您希望立即评估查询,则将其转换为List<string>with ToList()(以便您可以更改 的内容dt

于 2012-05-25T19:37:27.267 回答
1

您不能将其转换为 DataTable。Linq 最终会IEnumerable<string>根据您的选择输出一个。为了将其加载到 DataTable 中,您必须:

  1. 创建数据表
  2. 使用DataColumnCollection.Add 方法创建列(字符串,类型)
  3. 循环遍历数据
  4. 使用DataRowCollection.Add 方法 (Object[])为每个项目添加一个新行
于 2012-05-25T19:40:00.293 回答
1
    dtSuplr = (from suplr in dtSuplr.AsEnumerable()
                   select suplr).Distinct().CopyToDataTable();
于 2012-06-01T17:00:07.387 回答