
按照DataTable中的行列数循环读取就行了,如
for(int i=0;i<DataTable1RowsCount;i++)
{
//获取数据
string name=DataTable1Rows[i][0]ToString();
}
如果你只是要修改DataTable里的DataRow的话没有必要找到它的行号,直接在Select后得到的DataRow上修改就行了,它的修改会直接反映到DataTable上(其实就是直接修改了DataTable上的DataRow,这和数据库不一样不要弄混了),代码如下
private void button1_Click(object sender, EventArgs e)
{
DataTable dataTable = new DataTable();
dataTableColumnsAdd("ID");
dataTableColumnsAdd("Name");
for (int i = 1; i < 5; i++)
{
dataTableRowsAdd(new object[] { i, i + 1000 });
}
DataRow[] dataRows = dataTableSelect("id > 2");
for (int i = 0; i < dataRowsLength; i++)
{
dataRows[i]ItemArray = new object[] { i + 100, i + 5000 };
}
}
如何从一个DataTable中复制数据行到另一个DataTable中
DataTable dt = ""; //这里是填充DataTable数据
DataTable dtNew = dtCopy(); //复制dt表数据结构
dtNewClear() //清楚数据
for (int i = 0; i < dtRowsCount; i++)
{
if (条件语句)
{
dtNewRowsAdd(dtRows[i]ItemArray); //添加数据行
}
}
===前提:我们已经有一个DataTable的数据表 现在需要的只是其中的一行数据===
比如说下面这段代码在一个方法里 返回的就是一个DataTable!
sqlCon =new SqlConnection(strCon);
sqlCom =new SqlCommand();
sqlComConnection = sqlCon;
sqlComCommandText ="select_v";
sqlComCommandType = CommandTypeStoredProcedure;
sqlConOpen();
sdr = sqlComExecuteReader();
dt =new DataTable();
dtLoad(sdr);
假如返回的DataTable就是 dt ,
方法一:直接复制一个DataTable,然后清空数据(Column结构还保留),最后再用ImportRow()方法从dt中加入需要的Row;
DataTable dt2 = new DataTable();
dt2 = dtCopy();
dt2RowsClear();
dt2ImportRow(dtRows[0]);//这是加入的是第一行
方法二:
首先新的DataTable必须加入对应的列名(Column)
一个空的没有结构的DataTable是不允许直接向里面加入一行的!
for (int i =0; i < dtColumnsCount; i++)
{
dt2ColumnsAdd(dtColumns[i]ColumnName);//有重载的方法,可以加入列数据的类型
}
然后就可以直接加入Row了!
//1
DataRow drq = dt2NewRow();
drqItemArray = dtRows[0]ItemArray;//这是加入的是第一行
dt2RowsAdd(drq);
//2
dt2ImportRow(dtRows[0]);//这是加入的是第一行
最后可以将新的DataTable放入DataSet中了:
ds = new DataSet();
dsTablesAdd(dt2);
过滤DataTable的Rows的重复行 简单方法
DataView view = tableDefaultView;
DataTable tagetTable= viewToTable(true, "column1", "column2", );
源程序来自网络上的资源,我记录下来用于以后忘记之用。对大家也许有用
//表dataTableSource获取数据
string ConnectionString = "Provider=MicrosoftJetOLEDB40;Persist Security Info = False;" +
"Data Source = D:\\vb60\\mdb\\NorthWindmdb";
OleDbConnection Conn = new OleDbConnection(ConnectionString);
ConnOpen();
OleDbDataAdapter Ada = new OleDbDataAdapter("Select From Orders",Conn);
DataTable dataTableSource = new DataTable();
AdaFill(dataTableSource);
dataGrid1DataSource = dataTableSource;
//创建新表dataTableDest
DataTable dataTableDest = new DataTable();
//将表dataTableSource的结构复制到新表dataTableDest中
dataTableDest = dataTableSourceClone();
//然后再复制数据到新表中
foreach(DataRow dr in dataTableSourceRows)
{
//使用ImportRow()方法复制数据。若用dataTableDestRowsAdd(dr)将会出错:SystemArgumentException: 该行已经属于另一个表。
dataTableDestImportRow(dr);
}
dataGrid2DataSource = dataTableDest;
ConnClose();
方法1:在dataTable里控制
int count = datatableRowsCount;
int rows = count >= 20 20 : count;//防止数据不够20条时出错
for(int i=10;i<rows;i++)
{//这里取得所要的数据
}
方法2:在SQL语句里控制
例如:select top 10 from table1 where id not int (select top 10 id from table1 order by id) order by id
这样取得第10-20条数据。
以上就是关于c#怎样读取DataTable中的数据全部的内容,包括:c#怎样读取DataTable中的数据、datatable的select()结果,怎么获取行号啊、如何从一个DataTable中复制数据行到另一个DataTable中等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)