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);
}
}
需要注意的一些重要事项:
- 上面 RowIsGood 函数中的代码太复杂,无法使用标准 RowFilter 方法进行复制。
- DataTable 有可能变得非常大。它也被多个网格控件引用。无法将临时列添加到 DataTable 以促进 RowFilter 操作。
- 我正在使用 .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();
我需要从 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);
}
}
需要注意的一些重要事项:
- 上面 RowIsGood 函数中的代码太复杂,无法使用标准 RowFilter 方法进行复制。
- DataTable 有可能变得非常大。它也被多个网格控件引用。无法将临时列添加到 DataTable 以促进 RowFilter 操作。
- 我正在使用 .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();