如何对Datatable的分组

问题描述

在aspx页面写了<asp:GridViewID="GridView1"run="Server"></asp:Gridview>然后CS页面写了一个protectedDatatableBindGrid()的方法,然后与GridView进入绑定之后,按F5运行成功,生成的结果是:DetpNameMemberName软体研发一部一课AAA软体研发一部一课BBB软体研发一部一课CCC软体研发一部二课DDD软体研发一部二课EEE软体研发二部一课FFF软体研发二部一课GGG软体研发三部一课HHH请问我该如何写代码对Datatable进行分组生成结果如下:部门:软体研发一部一课AAABBBCCC部门:软体研发一部二课DDDEEE部门:软体研发二部一课FFFGGG部门:软体研发三部一课HHH

解决方案

解决方案二:
linqvaritem=DataTable.AsEnumerable().Groupby(dt=>dt.Filed<strin>(“filed1”))
解决方案三:
最麻烦的办法....可以忽略不计,但是结果是对的.DataSetset=Sqlhelper.ExecuteDataSet("2","select*fromtestorderbydetpname");DataTabledt=set.Tables[0];List<string>list=newList<string>();stringdepart0=dt.Rows[0]["detpname"].ToString().Trim();stringmember0=dt.Rows[0]["membername"].ToString().Trim();list.Add(depart0);list.Add(member0);for(inti=1;i<dt.Rows.Count;i++){if(dt.Rows[i]["detpname"].ToString().Trim()==depart0){list.Add(dt.Rows[i]["membername"].ToString().Trim());}else{list.Add(dt.Rows[i]["detpname"].ToString().Trim());list.Add(dt.Rows[i]["membername"].ToString().Trim());depart0=dt.Rows[i]["detpname"].ToString().Trim();}}dt.Columns.RemoveAt(1);dt.Rows.Clear();for(inti=0;i<list.Count;i++){DataRowdr=dt.NewRow();dr["detpname"]=list[i];dt.Rows.Add(dr);}GridView2.DataSource=dt;GridView2.DataBind();

解决方案四:
請問Sqlhelper是什麼意思是應用於哪個命令空間
解决方案五:
你直接DataTable.Select("部门='软体研发一部一课'"),很简单,分组后就放在d1,d2,d3,d4中示例代码DataTabledt=newDataTable();dt.Columns.Add("DetpName",typeof(string));dt.Columns.Add("MemberName",typeof(string));DataRowdr1=dt.NewRow();dr1["DetpName"]="软体研发一部一课";dr1["MemberName"]="AAA";dt.Rows.Add(dr1);DataRowdr2=dt.NewRow();dr2["DetpName"]="软体研发一部一课";dr2["MemberName"]="BBB";dt.Rows.Add(dr2);DataRowdr3=dt.NewRow();dr3["DetpName"]="软体研发一部一课";dr3["MemberName"]="CCC";dt.Rows.Add(dr3);DataRowdr4=dt.NewRow();dr4["DetpName"]="软体研发一部二课";dr4["MemberName"]="DDD";dt.Rows.Add(dr4);DataRowdr5=dt.NewRow();dr5["DetpName"]="软体研发一部二课";dr5["MemberName"]="EEE";dt.Rows.Add(dr5);DataRowdr6=dt.NewRow();dr6["DetpName"]="软体研发二部一课";dr6["MemberName"]="FFF";dt.Rows.Add(dr6);DataRowdr7=dt.NewRow();dr7["DetpName"]="软体研发二部一课";dr7["MemberName"]="GGG";dt.Rows.Add(dr7);DataRowdr8=dt.NewRow();dr8["DetpName"]="软体研发三部一课";dr8["MemberName"]="HHH";dt.Rows.Add(dr8);dataGridView1.DataSource=dt;DataRow[]d1=dt.Select("DetpName='软体研发一部一课'");DataRow[]d2=dt.Select("DetpName='软体研发一部二课'");DataRow[]d3=dt.Select("DetpName='软体研发二部一课'");DataRow[]d4=dt.Select("DetpName='软体研发三部一课'");

解决方案六:
引用3楼minibala的回复:

請問Sqlhelper是什麼意思是應用於哪個命令空間

一个sql操作的类,封装好方法
解决方案七:
引用4楼chinajiyong的回复:

你直接DataTable.Select("部门='软体研发一部一课'"),很简单,分组后就放在d1,d2,d3,d4中示例代码C#codeDataTabledt=newDataTable();dt.Columns.Add("DetpName",typeof(string));dt.Colum……

對呀,這個方法確實可以實現,但有局限性,如果記錄有100條難道每条都要这样写吗?
解决方案八:
引用5楼ghypnus的回复:

引用3楼minibala的回复:請問Sqlhelper是什麼意思是應用於哪個命令空間一个sql操作的类,封装好方法

我查了一下sqlhelper需要在web.config中加上<connectionStrings> <addconnectionString="Provider=Microsoft.Jet.OLEDB.4.0;DataSource=G:WebStudyDemo_Groupweb.mdb"name="SqlServerHelper"/></connectionStrings>我的是access数据库还不知道是不是正常的咧~~~而且还不知道加在XML哪个元素里面,唉我只是一个菜鸟
解决方案九:
SQLhelper资料http://www.cnblogs.com/zengxiangzhan/archive/2009/12/31/1636871.html你不用管sqlhelper具体是什么DataSetset=Sqlhelper.ExecuteDataSet("2","select*fromtestorderbydetpname");这个方法就是下面的代码publicstaticDataSetExecuteDataSet(stringname,stringsequal){DataSetds=newDataSet();try{con.Open();OleDbDataAdapteroda=newOleDbDataAdapter(sequal,con);oda.Fill(ds,name);}catch(Exceptione){MessageUtil.ShowTips(e.Message);}finally{con.Close();}returnds;}

解决方案十:
引用8楼ghypnus的回复:

SQLhelper资料http://www.cnblogs.com/zengxiangzhan/archive/2009/12/31/1636871.html你不用管sqlhelper具体是什么DataSetset=Sqlhelper.ExecuteDataSet("2","select*fromtestorderbydetpname");这个方法就是下面的……

如何不配置sqlhelper那么我的代码里就会显示"当前上下文不显示"sqlhelper"名称"!!!无法运行另外"select*fromtestorderbydepname"其中test是表示"web.mdb"中表的名称tbDept
解决方案十一:
这样你应该可以看懂了SqlConnectioncon=newSqlConnection("server=.;database=web.mdb;uid=sa;pwd=123456");SqlDataAdaptersda=newSqlDataAdapter("select*fromtbDept",con);DataSetds=newDataSet();sda.Fill(ds,"22");DataTabledt=ds.Tables[0];List<string>list=newList<string>();stringdepart0=dt.Rows[0]["detpname"].ToString().Trim();stringmember0=dt.Rows[0]["membername"].ToString().Trim();list.Add(depart0);list.Add(member0);for(inti=1;i<dt.Rows.Count;i++){if(dt.Rows[i]["detpname"].ToString().Trim()==depart0){list.Add(dt.Rows[i]["membername"].ToString().Trim());}else{list.Add(dt.Rows[i]["detpname"].ToString().Trim());list.Add(dt.Rows[i]["membername"].ToString().Trim());depart0=dt.Rows[i]["detpname"].ToString().Trim();}}dt.Columns.RemoveAt(1);dt.Rows.Clear();for(inti=0;i<list.Count;i++){DataRowdr=dt.NewRow();dr["detpname"]=list[i];dt.Rows.Add(dr);}GridView2.DataSource=dt;GridView2.DataBind();

解决方案十二:
引用10楼ghypnus的回复:

这样你应该可以看懂了C#codeSqlConnectioncon=newSqlConnection("server=.;database=web.mdb;uid=sa;pwd=123456");SqlDataAdaptersda=newSqlDataAdapter("select*fromtbDept",con);Da……

我用的access数据库应该是这样写是吗?1stringstr=@"Provider=Microsoft.Jet.OLEDB.4.0;"+@"DataSource=G:WebStudyDemo_Groupweb.mdb";2OleDbConnectionoledbconn=newOleDbConnection(str);3oledbconn.Open();4stringsqlstr="select*fromtbDept";5OleDbDataAdapterda=newOleDbDataAdapter(sqlstr,oledbconn);6DataSetds=newDataSet();7da.Fill(ds,"22");->"22"是什么意思?
解决方案十三:
datatable表的名字,随便取
解决方案十四:
引用10楼ghypnus的回复:

这样你应该可以看懂了C#codeSqlConnectioncon=newSqlConnection("server=.;database=web.mdb;uid=sa;pwd=123456");SqlDataAdaptersda=newSqlDataAdapter("select*fromtbDept",con);……

我已经看懂了你的代码,你的思想是:1.从数据库中读出所有的数据然后放在datatable中2.再把datable中的内容与list进行相较若相同的就在list中加入membername若不同要加入membername和deptname3.遍历list再把内容填入datatable中但有一个问题我的deptname和membername不存在数据库中,它只是我写protectedDatatableBindGrid()方法返回的数据,也就是说我的分组是基于datatable的,我的问题中有强调这个
解决方案十五:
linq不太懂
解决方案:
我的数据库的内容是:tbDept:IDParentIDDeptNameLevelIDRoleID10软体研发处0021软体研发一部0031软体研发二部0041软体研发三部0052软体研发一部一课0062软体研发一部二课0073软体研发二部一课0083软体研发二部一课0094软体研发三部一课00104软体研发三部二课00115AAA11125BBB11......2810RRR22tblevel:LevelIDLevelName1成员2长官居tbRole:RoleIDRolename1BIOS2Test3Driver4PM其实原来我想得到的结果是:成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test.........我的思路是先得到DetpNameMemberName软体研发一部一课AAA软体研发一部一课BBB软体研发一部一课CCC软体研发一部二课DDD软体研发一部二课EEE软体研发二部一课FFF软体研发二部一课GGG软体研发三部一课HHH然后对Datatable进入分组,但现在看来的我思路好像有问题~~请各位大哥多帮帮小妹,看如何才能达到我要的结果?
解决方案:
用C1FlexGrid第三方控件吧,个人感觉不错的QQ119914607可以加我我截图给你看看运行起来的效果
解决方案:
我的数据库的内容是:tbDept:IDParentIDDeptNameLevelIDRoleID10软体研发处0021软体研发一部0031软体研发二部0041软体研发三部0052软体研发一部一课0062软体研发一部二课0073软体研发二部一课0083软体研发二部一课0094软体研发三部一课00104软体研发三部二课00115AAA11125BBB11......2810RRR22tblevel:LevelIDLevelName1成员2长官居tbRole:RoleIDRolename1BIOS2Test3Driver4PM~~~~~~~~~~~~其实我想得到的结果是:成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test.........~~~~~~~~~~我的思路是先得到一个datatableDetpNameMemberName软体研发一部一课AAA软体研发一部一课BBB软体研发一部一课CCC软体研发一部二课DDD软体研发一部二课EEE软体研发二部一课FFF软体研发二部一课GGG软体研发三部一课HHH然后对Datatable进入分组,但现在看来的我思路好像有问题~~请各位大哥多帮帮小妹,看如何才能达到我要的结果?
解决方案:
引用16楼w15948723926的回复:

用C1FlexGrid第三方控件吧,个人感觉不错的QQ119914607可以加我我截图给你看看运行起来的效果

我已经加了你了,但C1FlexGrid是什么控件我不知道
解决方案:
这应该属于一个比较简单的查询。
解决方案:
引用18楼dengpeng1的回复:

引用16楼w15948723926的回复:用C1FlexGrid第三方控件吧,个人感觉不错的QQ119914607可以加我我截图给你看看运行起来的效果我已经加了你了,但C1FlexGrid是什么控件我不知道

控件我可以传给你
解决方案:
问问题的艺术……成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test总算似乎看懂了你的需求应该是1.重复显示所有的部门2.显示每个部门的所有员工姓名职级和角色,而这个“姓名职级和角色”放在所有部门名的最上方和下面的列对应首先告诉你,单单一个girdview是实现不了你这个功能的。可以说你控件用错了。这是两个数据集所以你应该用Repeater控件,绑定数据“selectID,DeptNamefromtbdept”,Repeater里每一项又包含一个label和一个gridview,label显示DeptNamegridview绑定数据“selectname、职级、角色fromemployeeajoinrolejoinlevelwheredept=(repeater当前项的ID)”
解决方案:
太帮了
解决方案:
引用21楼isme1982的回复:

问问题的艺术……成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test总算似乎看懂了你的需求应该是1.重复显示所有的部门2.显示每个部门的所有员工姓名职级和角色,而这个“姓名职级和角色”放在所有部门名的最上方和下面……

可能是我问题方式不对终于有大哥明白妹妹的意思了~~~那我就先按照你的方法试试看~~~先在这里谢谢你了~~~
解决方案:
干嘛把问题复杂化呢,直接用SQL语句,在SQL语句中,写好查询,前台,绑定数据的时候,做个判断,如果第一遍出现,’软体研发一部一课‘,就显示,第二遍出现,就隐藏,就是这样的循环,搞定。说详细点,你可以后台定义一个变量,循环时候,第一遍把‘软体研发一部一课’赋值给变量,第二遍循环,跟这个变量循环,当等于‘软体研发一部一课’,就不用循环,你可以试试看。我基本上,就是这样来做。
解决方案:
引用21楼isme1982的回复:

问问题的艺术……成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test总算似乎看懂了你的需求应该是1.重复显示所有的部门2.显示每个部门的所有员工姓名职级和角色,而这个“姓名职级和角色”放在所有部门名的最上方和下面……

按照你的方法我写了如下的代码:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1"runat="server"><div><asp:RepeaterID="Repeater1"runat="server"DataSourceID="AccessDataSource1"><HeaderTemplate><table><tr><td>成員</td><td>職級</td><td>角色</td></tr></table></HeaderTemplate><ItemTemplate><table><tr><td><asp:Labelrunat="server"ID="label1">部門:</asp:Label></td><td><asp:Labelrunat="server"ID="label_deptName"Text='<%#Eval("DeptName")%>'></asp:Label></td></tr><tr><td><asp:GridViewID="Gridview1"runat="server"AutoGenerateColumns="true"DataSourceID="Accessdatasource_member"OnRowDataBound="Gridview_onRowDataBound"></asp:GridView><asp:AccessDataSourceID="Accessdatasource_member"runat="server"DataFile="~/web.mdb"SelectCommand="SELECT[DeptName],[LevelName],[RoleName]from([tbDept]leftjoin[tbLevel]on[tbDept.LevelID]=[tbLevel.LevelID])leftjoin[tbRole]on[tbDept.RoleID]=[tbRole.RoleID]where[DeptName]IN(SELECT[DeptName]from[tbDept]where[ParentID]in(SELECT[ID]from[tbDept]where[DeptName]=?))"><SelectParameters><asp:ParameterName="DeptName"Type="String"/></SelectParameters></asp:AccessDataSource></td></tr></table></ItemTemplate></asp:Repeater><asp:AccessDataSourcerunat="server"ID="AccessDataSource1"DataFile="~/web.mdb"SelectCommand="SELECT[ID],[DeptName]from[tbDept]where[ParentID]<>0and[ParentID]<>1and[RoleID]=0"></asp:AccessDataSource></div></form></body></html>请问在Gridview_onRowDataBound()方法中我该如何写代码把label中的DeptName传给gridview?
解决方案:
引用21楼isme1982的回复:问问题的艺术……成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test总算似乎看懂了你的需求应该是1.重复显示所有的部门2.显示每个部门的所有员工姓名职级和角色,而这个“姓名职级和角色”放在所有部门名的最上方和下面……按照你的方法我写了如下的代码:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1"runat="server"><div><asp:RepeaterID="Repeater1"runat="server"DataSourceID="AccessDataSource1"><HeaderTemplate><table><tr><td>成員</td><td>職級</td><td>角色</td></tr></table></HeaderTemplate><ItemTemplate><table><tr><td><asp:Labelrunat="server"ID="label1">部門:</asp:Label></td><td><asp:Labelrunat="server"ID="label_deptName"Text='<%#Eval("DeptName")%>'></asp:Label></td></tr><tr><td><asp:GridViewID="Gridview1"runat="server"AutoGenerateColumns="true"DataSourceID="Accessdatasource_member"OnRowDataBound="Gridview_onRowDataBound"></asp:GridView><asp:AccessDataSourceID="Accessdatasource_member"runat="server"DataFile="~/web.mdb"SelectCommand="SELECT[DeptName],[LevelName],[RoleName]from([tbDept]leftjoin[tbLevel]on[tbDept.LevelID]=[tbLevel.LevelID])leftjoin[tbRole]on[tbDept.RoleID]=[tbRole.RoleID]where[DeptName]IN(SELECT[DeptName]from[tbDept]where[ParentID]in(SELECT[ID]from[tbDept]where[DeptName]=?))"><SelectParameters><asp:ParameterName="DeptName"Type="String"/></SelectParameters></asp:AccessDataSource></td></tr></table></ItemTemplate></asp:Repeater><asp:AccessDataSourcerunat="server"ID="AccessDataSource1"DataFile="~/web.mdb"SelectCommand="SELECT[ID],[DeptName]from[tbDept]where[ParentID]<>0and[ParentID]<>1and[RoleID]=0"></asp:AccessDataSource></div></form></body></html>请问在Gridview_onRowDataBound()方法中我该如何写代码把label中的DeptName传给gridview
解决方案:
引用21楼isme1982的回复:问问题的艺术……成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test总算似乎看懂了你的需求应该是1.重复显示所有的部门2.显示每个部门的所有员工姓名职级和角色,而这个“姓名职级和角色”放在所有部门名的最上方和下面……按照你的方法我写了如下的代码:<%@PageLanguage="C#"AutoEventWireup="true"CodeFile="Default.aspx.cs"Inherits="_Default"%><!DOCTYPEhtmlPUBLIC"-//W3C//DTDXHTML1.0Transitional//EN""http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd"><htmlxmlns="http://www.w3.org/1999/xhtml"><headrunat="server"><title></title></head><body><formid="form1"runat="server"><div><asp:RepeaterID="Repeater1"runat="server"DataSourceID="AccessDataSource1"><HeaderTemplate><table><tr><td>成員</td><td>職級</td><td>角色</td></tr></table></HeaderTemplate><ItemTemplate><table><tr><td><asp:Labelrunat="server"ID="label1">部門:</asp:Label></td><td><asp:Labelrunat="server"ID="label_deptName"Text='<%#Eval("DeptName")%>'></asp:Label></td></tr><tr><td><asp:GridViewID="Gridview1"runat="server"AutoGenerateColumns="true"DataSourceID="Accessdatasource_member"OnRowDataBound="Gridview_onRowDataBound"></asp:GridView><asp:AccessDataSourceID="Accessdatasource_member"runat="server"DataFile="~/web.mdb"SelectCommand="SELECT[DeptName],[LevelName],[RoleName]from([tbDept]leftjoin[tbLevel]on[tbDept.LevelID]=[tbLevel.LevelID])leftjoin[tbRole]on[tbDept.RoleID]=[tbRole.RoleID]where[DeptName]IN(SELECT[DeptName]from[tbDept]where[ParentID]in(SELECT[ID]from[tbDept]where[DeptName]=?))">[b]<SelectParameters><asp:ParameterName="DeptName"Type="String"/></SelectParameters>[/b]</asp:AccessDataSource></td></tr></table></ItemTemplate></asp:Repeater><asp:AccessDataSourcerunat="server"ID="AccessDataSource1"DataFile="~/web.mdb"SelectCommand="SELECT[ID],[DeptName]from[tbDept]where[ParentID]<>0and[ParentID]<>1and[RoleID]=0"></asp:AccessDataSource></div></form></body></html>请问在Gridview_onRowDataBound()方法中我该如何写代码把label中的DeptName传给gridview
解决方案:
引用21楼isme1982的回复:

问问题的艺术……成员职级角色部门:软体研发一部一课AAA成员BIOSBBB成员BIOSCCC成员BIOS部门:软体研发一部二课DDD成员TestEEE成员TestFFF长官Test总算似乎看懂了你的需求应该是1.重复显示所有的部门2.显示每个部门的所有员工姓名职级和角色,而这个“姓名职级和角色”放在所有部门名的最上方和下……

gridview绑定数据“selectname、职级、角色fromemployeeajoinrolejoinlevelwheredept=(repeater当前项的ID)”->请问这句话怎么实现~~~请各位大哥帮帮小妹

时间: 2024-11-05 21:38:01

如何对Datatable的分组的相关文章

c# datatable

问题描述 数据来自不同的数据库,不同的服务器,怎么把下面原表的数据在C#里做成样表的样子在sql里我可以根据master_no编号判断做出来,但有10多个数据库的数据时速度太慢,现在想放在c#的datatable里操作,要怎么弄?我的sql代码:select营业日期,sum(casemaster_nowhen'001'then应收金额else0end)wx应收金额,sum(casemaster_nowhen'001'then实收金额else0end)wx实收金额,sum(casemaster_n

关于linq查询分组的数据转换

问题描述 varquery=fromtinMXTabel.AsEnumerable()grouptbynew{t1=t.Field<string>("MTID"),t2=t.Field<string>("CustomerTID"),t3=t.Field<string>("PiCi"),t4=t.Field<string>("ClothNo"),t5=t.Field<stri

为ADO 程序员设计的 ADO.NET (转)

ado|程序|程序员|设计 摘要:本文讨论如何以 ADO.NET 方式实现基本数据库操作,以及何时使用 ADO.NET 代替 ADO. 目录.NET 中的数据访问读取数据DataSet.DataTable 和 Recordset转换现有代码更新数据XML 扩展支持总结 自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种.在这过程中,发生了许多有趣的事.例如,COM 闯入数据库领域,开始培植 OLE

为 ADO 程序员设计的 ADO.NET

ado|程序|程序员|设计 摘要:本文讨论如何以 ADO.NET 方式实现基本数据库操作,以及何时使用 ADO.NET 代替 ADO. 目录.NET 中的数据访问读取数据DataSet.DataTable 和 Recordset转换现有代码更新数据XML 扩展支持总结 自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种.在这过程中,发生了许多有趣的事.例如,COM 闯入数据库领域,开始培植 OLE

为 ADO 程序员设计的 ADO.NET (1)

ado|程序|程序员|设计 为 ADO 程序员设计的 ADO.NET 摘要:本文讨论如何以 ADO.NET 方式实现基本数据库操作,以及何时使用 ADO.NET 代替 ADO. 目录 .NET 中的数据访问读取数据DataSet.DataTable 和 Recordset转换现有代码更新数据XML 扩展支持总结自若干年前推出开放式数据库连接 (ODBC) 应用程序编程接口 (API) 以来,出现了各种各样的数据库访问技术,而 ADO.NET 是其中最新的一种.在这过程中,发生了许多有趣的事.例如

datatable 按时间分组

问题描述 由于数据库已经写死动不了,要不然用SQL很容易搞定.从数据库读出来的datatable是这样的结构时间用户名金额2008-05-0518:07:57aaa102008-05-0501:07:57aaa152008-05-0615:00:20aaa52008-05-0718:00:02aaa82008-05-0819:08:50aaa202008-05-0818:27:50aaa302008-05-0819:08:00aaa50我要得到以下结果,就是分组把当天的金额加起来当天时间用户名当

求指点:linq怎么对datatable的多个字段进行分组啊?

问题描述 比如:有个datatable有四个字段:xian,xiang,cun,mianji想通过xianxiang分类统计面积linq语句怎么写啊? 解决方案 解决方案二:grouprbynew{xian=r.Fields<string>("xian"),xiang=r.Fields<string>("xiang")} 类似这样,单词不知道打错了没有解决方案三:varquery=fromtindt.AsEnumerable()grouptb

dataTable如何按分组统计的多少进行排序(不好描述,内有例子)

问题描述 dataTable内的数据是这样的,我想按下面这样排序:排序的依据是:dw字段中y的统计数为5,z的统计为3,x的统计为2有什么办法能做到吗?程序是.NET2.0的,所以不能用linqjavascript:void(0); 解决方案 解决方案二:1.遍历,统计出datatable里面dw列每个元素的数量,得到一个中间表dt1ItemCountx2y5z3 2.根据dt1的Count回过头来查询datatable,构造你上面的结果集解决方案三:谢楼上,第一步容易,第二步怎么搞呢?解决方案

excel-asp.net把DataTable里的数据导出到Excel 并且要做合并 某列里多行合并的操作

问题描述 asp.net把DataTable里的数据导出到Excel 并且要做合并 某列里多行合并的操作 把DataTable里的数据导出到Excel 并且要做合并 某列里多行合并的操作 请问有什么方法,求大神指教.谢谢了. 解决方案 http://m.baidu.com/from=1011267h/bd_page_type=1/ssid=0/uid=0/pu=usm%400%2Csz%401321_1004%2Cta%40utouch_2_4.1_11_2.1/baiduid=974ADEE1