foreach(datarows item in datatable)
{
dataset_stutables["学生表"]rows[0]["学生"]; //这样循环读取一行的每一个列的值
}
上面循环去读取可以把一列的每个值读取出来,我就是这样实现的。
如何提取DataTable中的某一列字段的所有数据,进行运算
最基本的,用for循环遍历行(datarow)
for(int i=0;i<datatableRowsCount;i++)
{
string strValue="";
strValue=datatablerows[i][0]ToString();
//上面就是获取第i行第0列的值,如果要计算的话需要转换类型,如下:
int intValue=0;
int intValue=Int32Parse(datatablerows[i][0]);
//如果是有小数点的数据,如下:
double doubleValue=0;
double doubleValue=doubleParse(datatablerows[i][0]);
}
数据可以取出来,计算就简单了。
如果你想求整列总和的话,可以用Datatable内置的方法:
string strSum = datatableCompute("sum(列名)", "true")ToString(); //类型参照上面自己转,列名要写对,并且确定数据类型是数字。
一、在DataTable中查找
1 使用Select方法查找没有主键的表,或者通过非主键字段查找。
DataTable本身有一个select方法,返回的是一个DataRow的数组:
using (SqlConnection firstconnection = new SqlConnection(connectionstring))
{
SqlCommand cmdEmployee = firstconnectionCreateCommand();
cmdEmployeeCommandText = "select from Employees";
SqlDataAdapter sda = new SqlDataAdapter(cmdEmployee);
DataSet ds=new DataSet();
sdaFill(ds, "Employees");
DataRow[] dr=dsTables["Employees"]Select("Title Like 'Production' ");
}
2 使用Find方法查找有主键的表
分两种情况:
(1) 主键只有一个字段
DataRow dr = dtRowsFind("主键字段的值");
(2) 主键有多个字段
例如,adventureWorks中的salesSalesPersonQuotaHistory表,其主键由1个int类型字段和1个datetime组成,以下代码查找满足“ISalesPersonD=268且QuotaDate=2001-7-1 0:00:00 ”的记录。
Object[] obj= new Object[]{268,"2001-7-1 0:00:00"};
dr = dtRowsFind(obj);
二、使用DataView筛选数据
DataView可以看成DataTable中的记录加上某种条件后得到的数据。DataView依附于DataTable,每个DataTable都至少有一个DataView。数据绑定中控件绑定到的其实不是DataTable,而是DataTable的DefaultView。
DataView常用的数据筛选方法有:
1 筛选特定状态的行
以下代码找出所有刚删除掉的行:
dvRowStateFilter = DataViewRowStateDeleted;
2 使用Sort属性,可以指定单个或多个列进行排序,如:
dvSort = "Name ASC,ID DESC";
3 使用RowFilter属性动态筛选记录。
dvRowFilter = "Name LIKE '张%'";
4 使用Find和FindRows在DataView中查找。
使用这两个方法,是按照行的排序关键字值来对行进行搜索的。
Find方法返回一个整数,表示匹配搜索条件的DataRowView的索引。如果多行匹配,只返回一个匹配行索引,如果未找到匹配项,返回-1。
若要返回匹配多个行的搜索结果,可以使用FindRows方法。它返回DataView中的所有匹配行的DataRowView数组。如果未找到匹配项,DataRowView数组为空。
若要使用Find或FindRows方法,必须通过将ApplyDefaultSort设置为true或通过使用DataView对象的Sort属性来指定排序顺序,否则将引发异常。这两种方法将一个值数组用做输入,该数组的长度与排序顺序包含的列数相匹配。当对多个列进行排序时,对象数组的值必须匹配在DataView的Sort属性中指定的列的顺序。
对具有单个列排序顺序的DataView调用Find方法。
dvSort = "Name";
int rowIndex = dvFind("张三");
如果Sort属性指定多个列,则必须按照Sort属性指定的顺序为每个列传递包含搜索值的对象数组。
dvSort = "Name,ID";
DataRowView[] foundRows = dvFindRows(new Object[]{"7" , "Production%"});
按照DataTable中的行列数循环读取就行了,如
for(int i=0;i<DataTable1RowsCount;i++)
{
//获取数据
string name=DataTable1Rows[i][0]ToString();
}
JS无法获得网站服务器上保存在内存中的DataTable。但有另外一种途径,DataTable做为数据源输出到页面上之后比如Gridview,成为一个HTML的table。就可以使用JS来遍历这个table了。
具体怎么遍历看下边一段
var tableObj = documentgetElementById("tableName");
var str = "";
for(var i=0;i<tableObjrowslength;i++)
{
for(varj=0;j<tableObjrows[i]cellslength;j++)
{
//str += tableObjrows[i]cells[j]innerHTML+" ";
for(var z=0;z<tableObjrows[i]cells[j]childrenlength;z++)
{
var text = tableObjrows[i]cells[j]children[z];//取得text object
str += textvalue;
}
}
str+=""n";
}
alert(str);
如果放到HTML是一个table的话,tableObjrows[i]cells[j]innerText你这样试下CurDTRows[0][x]不是HTML的方式
比如你的datatable为T
column c=TCloumes['列名'];
c就是你相要的东西,如果它只有一个值的话,可以是:
类型 c=TCloumes['列名']rows[0]Value;
如果你知道行号和列号的话可以直接取值,如
string test=datatableRows[i][j]ToString(); //其中i表示行号,j表示列号,均从0开始
如果有列名的话也可以用列名,如
string test=datatableRows[i][“username”]ToString(); //需把username替换为真正的列名
以上就是关于c#怎么通过表头字段获得整个datatable的一列的数据全部的内容,包括:c#怎么通过表头字段获得整个datatable的一列的数据、如何提取DataTable中的某一列字段的所有数据,进行运算、如何在DataTable中查找数据等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)