我只知道满足条件记录可以用Select()方法
那怎么导入或导出呢?
12 个解决方案
#1
for table 循环
if row 符合条件
然后把这个row 放了newtable 中
#2
/// <summary>
/// 执行DataTable中的查询返回新的DataTable
/// </summary>
/// <param name="dt">源数据DataTable</param>
/// <param name="condition">查询条件</param>
/// <returns></returns>
private DataTable GetNewDataTable(DataTable dt,string condition)
{
DataTable newdt = new DataTable();
newdt=dt.Clone();
DataRow[] dr = dt.Select(condition);
for(int i=0;i<dr.Length;i++)
{
newdt.ImportRow((DataRow)dr[i]);
}
return newdt;//返回的查询结果
}
#3
可是,如果数据量大的话,这样行吗?
.net这么强大,总该有个对应的方法吧。
.net这么强大,总该有个对应的方法吧。
#4
DataTable 有个Select() 方法
把筛选条件传进去,就返回 一个复合条件 DataRow 的集合
然后循环加到新 DataTable 里面就OK了
newtable.Rows.Add(dataRow[i].ItemArray);
把筛选条件传进去,就返回 一个复合条件 DataRow 的集合
然后循环加到新 DataTable 里面就OK了
newtable.Rows.Add(dataRow[i].ItemArray);
#5
数据量大。在数据库处理完了再取出来不就行了
#6
看来,只能循环了,怀念 Append From...
#7
回5楼,是这样,这个表里放了各式各样的信息,需要分门别类的提取出来,然后作为控件的数据源,种类繁多,我不想一次次从数据库取数据。
#8
这样加不行,因为已有的Row已经属于另一个DataTable,先把DataTable.Clone一份(只有架构),然后用Import,语法我记不清,可以自己查查
#9
直接加 DataRow 当然不行
加 DataRow的ItemArray还是可以的
#10
+
#11
datatable d =new datatable()
d.defaultview.rowfilter="c1='a'";
datatable c=d.defaultview.totable();
d.defaultview.rowfilter="c1='a'";
datatable c=d.defaultview.totable();
#12
11楼的方法可行,我试过了,正是需要的效果。
defaultview是DataView类型,rowfilter和totable都是DataView的方法
谢谢诸位!散分
另外:
2楼代码中:newdt.ImportRow((DataRow)dr[i]);
改为newdt.ImportRow(dr[i]);也行
4楼代码:newtable.Rows.Add(dataRow[i].ItemArray);
应该和2楼意思一样吧,我没试
defaultview是DataView类型,rowfilter和totable都是DataView的方法
谢谢诸位!散分
另外:
2楼代码中:newdt.ImportRow((DataRow)dr[i]);
改为newdt.ImportRow(dr[i]);也行
4楼代码:newtable.Rows.Add(dataRow[i].ItemArray);
应该和2楼意思一样吧,我没试
#1
for table 循环
if row 符合条件
然后把这个row 放了newtable 中
#2
/// <summary>
/// 执行DataTable中的查询返回新的DataTable
/// </summary>
/// <param name="dt">源数据DataTable</param>
/// <param name="condition">查询条件</param>
/// <returns></returns>
private DataTable GetNewDataTable(DataTable dt,string condition)
{
DataTable newdt = new DataTable();
newdt=dt.Clone();
DataRow[] dr = dt.Select(condition);
for(int i=0;i<dr.Length;i++)
{
newdt.ImportRow((DataRow)dr[i]);
}
return newdt;//返回的查询结果
}
#3
可是,如果数据量大的话,这样行吗?
.net这么强大,总该有个对应的方法吧。
.net这么强大,总该有个对应的方法吧。
#4
DataTable 有个Select() 方法
把筛选条件传进去,就返回 一个复合条件 DataRow 的集合
然后循环加到新 DataTable 里面就OK了
newtable.Rows.Add(dataRow[i].ItemArray);
把筛选条件传进去,就返回 一个复合条件 DataRow 的集合
然后循环加到新 DataTable 里面就OK了
newtable.Rows.Add(dataRow[i].ItemArray);
#5
数据量大。在数据库处理完了再取出来不就行了
#6
看来,只能循环了,怀念 Append From...
#7
回5楼,是这样,这个表里放了各式各样的信息,需要分门别类的提取出来,然后作为控件的数据源,种类繁多,我不想一次次从数据库取数据。
#8
这样加不行,因为已有的Row已经属于另一个DataTable,先把DataTable.Clone一份(只有架构),然后用Import,语法我记不清,可以自己查查
#9
直接加 DataRow 当然不行
加 DataRow的ItemArray还是可以的
#10
+
#11
datatable d =new datatable()
d.defaultview.rowfilter="c1='a'";
datatable c=d.defaultview.totable();
d.defaultview.rowfilter="c1='a'";
datatable c=d.defaultview.totable();
#12
11楼的方法可行,我试过了,正是需要的效果。
defaultview是DataView类型,rowfilter和totable都是DataView的方法
谢谢诸位!散分
另外:
2楼代码中:newdt.ImportRow((DataRow)dr[i]);
改为newdt.ImportRow(dr[i]);也行
4楼代码:newtable.Rows.Add(dataRow[i].ItemArray);
应该和2楼意思一样吧,我没试
defaultview是DataView类型,rowfilter和totable都是DataView的方法
谢谢诸位!散分
另外:
2楼代码中:newdt.ImportRow((DataRow)dr[i]);
改为newdt.ImportRow(dr[i]);也行
4楼代码:newtable.Rows.Add(dataRow[i].ItemArray);
应该和2楼意思一样吧,我没试