c#如何从数据表构建自定义数据视图?
我需要从DataTable创建DataView,但有一个不同寻常的转折点: 我需要(用代码)逐行确定DataTable中哪些行包含在DataView中c#如何从数据表构建自定义数据视图?,c#,datatable,ado.net,dataview,C#,Datatable,Ado.net,Dataview,我需要从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 nee
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);
}
}
需要注意的一些重要事项:
提前谢谢 因为您正在寻找逐行解决方案,并且已经有了一个接受数据行并返回bool的函数 只需将引用添加到
System.Data.DataSetExtensions
并使用AsDataView
方法
DataView dv=DT.AsEnumerable().Where(RowIsGood).AsDataView();
因为您正在寻找逐行解决方案,并且已经有了一个接受数据行并返回bool的函数 只需将引用添加到
System.Data.DataSetExtensions
并使用AsDataView
方法
DataView dv=DT.AsEnumerable().Where(RowIsGood).AsDataView();
这些要求有点模糊,但我会避免这种做法。您可以在DT中添加一个或多个列,这些列总结了太复杂的各种情况。我们的目标是获得一些可以在行过滤器中使用的原始值级别。我认为创建一个具有“RowIsGood”结果的简化表应该可以吗?类似于“DataTable reducedt=dt.Clone();然后在for循环中,if(RowIsGood){reducedt.ImportRow(row);}然后在循环之后,“DataView dv=new DataView(reducetable)”;“还是我遗漏了什么?您是否考虑过
DataView.Delete
而不是call AcceptChanges?这些行只会停留在已删除状态并被隐藏(直到您想要返回它们,然后您可以拒绝更改)要求有点模糊,但我会避免这种方法。您可以在DT中添加一个或多个列,以总结过于复杂的各种情况。目标是获得一些可以在行筛选器中使用的原始值级别。我会考虑创建一个带有“RowIsGood”的简化表“结果应该有效吗?类似于“DataTable reducedt=dt.Clone();然后在for循环中,if(RowIsGood){reducedt.ImportRow(row);}然后在循环之后,“DataView dv=new DataView(reducetable)”;“还是我遗漏了什么?您是否考虑过DataView.Delete
而不是call AcceptChanges?这些行只会停留在已删除状态并被隐藏(直到您想要返回它们,然后您可以拒绝更改)