c# 如何从 DataTable 构建自定义 DataView?

c# How to build a custom DataView from a DataTable?

我需要从 DataTable 创建 DataView,但有一个不寻常的转折:

我需要逐行决定(使用代码)DataTable 中的哪些行包含在 DataView 中。

DataTable dt = LoadData();
DataView dv = new DataView(dt);

foreach (DataRow row in dt.Rows)
{
    if (RowIsGood(row))
    { 
        // This obviously doesn't work but I need equivalent logic:
        DataRowView drv = new DataRowView();
        drv.Row = row;
        dv.Add(drv);
    }
}

需要注意的一些重要事项:

  1. 上面 RowIsGood 函数中的代码太复杂,无法使用标准 RowFilter 方法进行复制。
  2. DataTable 有可能变得非常大。它也被多个网格控件引用。无法将临时列添加到 DataTable 以促进 RowFilter 操作。
  3. 我正在使用 .NET v4.0。

那么 DataTable/DataView 架构甚至可能吗?

LINQ 是否允许我根据需要自定义 DataView?

提前致谢!

因为您正在逐行寻找解决方案,并且已经有一个接受 DataRow 和 returns 布尔值的函数。

只需将引用添加到 System.Data.DataSetExtensions 并使用 AsDataView 方法

DataView dv=DT.AsEnumerable().Where(RowIsGood).AsDataView();
DataView dv = (from n in DT.AsEnumerable() Where RowIsGood(n) select n ).AsDataView();