DATATABLE数据问题

问题描述

我现有一DATATABLE里面的数据如下nameaddressage付一A18付二b20付二b21付二c22我想合成这样的一个datatablenameaddressage付一A18付二b,c63如何能实现啊...思路不太清楚.我理解的就是根据name列里面的数据判断一样的话,就让address列的数据+=用逗号分开再把他们的age列数据相加.用上for循环实现感觉自己有点迷糊..希望那位大侠指点下

解决方案

解决方案二:
按name分组,连接address字符串,age相加!
解决方案三:
楼上说得对.用视图吧
解决方案四:
你是要在DataTable中作处理还是在sql中处理后再绑到DataTable中?
解决方案五:
最好能在SQL中处理,不然在代码中还不是很容易,有点麻烦。按2楼说的应该就没问题
解决方案六:
用视图做或者用SQL做自己写一写SQL句然后在数据绑定
解决方案七:
先将你自己的数据通过循环,过滤出来,相同列用一个全局变量递加,中间用,隔开数据过滤后,就是三个全局变量,再用这三个全局变量写成一个一个table就可以了下面的代码是,将全局变量写成table的方法至于开始的数据如何提取出来,你得自己写个循环方法得修改一下、我这里数组soul和soulid是元素一样多的而且你那里不能用,最全局变量的分隔符varsoul=unitnameArraylist.Split(',');varsoulid=unitidArraylist.Split(',');DataTabletable1=newDataTable();table1.Columns.Add("unitname3");table1.Columns.Add("unitid3");for(inti=0;i<soulid.Length-1;i++){DataRowNewRow=table1.NewRow();NewRow["unitid3"]=soulid[i].ToString();NewRow["unitname3"]=soul[i].ToString();table1.Rows.Add(NewRow);}

解决方案八:
address里要判断,这种最好在存储过程中通过游标实现
解决方案九:
DataTabletmpdt=dt.Clone();foreach(DataRowdrindt.Rows){if(tmpdt.Rows.Count==0){tmpdt.ImportRow(dr);}stringname=dr[name].ToString();stringaddress=dr[address].ToString();intage=int.Parse(mydr[age].ToString());DataRow[]drs=tmdt.select("name='"+name+"'");if(drs.Length>0){foreach(DataRowmydrindrs){address+=(mydr[address].ToString()+',');age+=int.Parse(mydr[age].ToString());}DataRownr=tmpdt.NewRow();nr[name]=name;nr[address]=address;nr[age]=age;}}
解决方案十:
DataTabletmpdt=dt.Clone();foreach(DataRowdrindt.Rows){if(tmpdt.Rows.Count==0){tmpdt.ImportRow(dr);}stringname=dr[name].ToString();stringaddress=dr[address].ToString();intage=int.Parse(mydr[age].ToString());DataRow[]drs=tmdt.select("name='"+name+"'");if(drs.Length>0){foreach(DataRowmydrindrs){address+=(mydr[address].ToString()+',');age+=int.Parse(mydr[age].ToString());}DataRownr=tmpdt.NewRow();nr[name]=name;nr[address]=address;nr[age]=age;}else{tmpdt.ImportRow(dr);}}
解决方案十一:
引用2楼xslqingfeng的回复:

楼上说得对.用视图吧

好像用参数不行
解决方案十二:
学习
解决方案十三:
下面代码测试通过.protectedvoidbtnTest_Click(objectsender,EventArgse){DataTabledt=newDataTable();PrepareData(dt);introwCount=dt.Rows.Count;Hashtablehs=newHashtable();for(inti=rowCount-1;i>0;i--){DataRowdr=dt.Rows[i];stringname=dr["name"].ToString();stringaddress=dr["address"].ToString();intage=int.Parse(dr["age"].ToString());//检测名称是否重复if(hs.ContainsKey(name)){dt.Rows.RemoveAt(i);DataRow[]drFind=dt.Select(string.Format("name='{0}'",name));stringoldAddress=string.Format(",{0},",drFind[0]["address"].ToString());//检测address是否重复if(oldAddress.IndexOf(string.Format(",{0},",address))==-1){drFind[0]["address"]=string.Format("{0}{1}",address,oldAddress).TrimEnd(',');}drFind[0]["age"]=int.Parse(drFind[0]["age"].ToString())+age;dt.AcceptChanges();continue;}hs.Add(name,null);}GridView1.DataSource=dt;GridView1.DataBind();}///<summary>///准备测试数据///</summary>///<paramname="dt"></param>privatevoidPrepareData(DataTabledt){dt.Columns.Add("name",typeof(System.String));dt.Columns.Add("address",typeof(System.String));dt.Columns.Add("age",typeof(System.Int32));DataRowdr=dt.NewRow();dr["name"]="付一";dr["address"]="A";dr["age"]=18;dt.Rows.Add(dr);dr=dt.NewRow();dr["name"]="付二";dr["address"]="b";dr["age"]=20;dt.Rows.Add(dr);dr=dt.NewRow();dr["name"]="付二";dr["address"]="b";dr["age"]=21;dt.Rows.Add(dr);dr=dt.NewRow();dr["name"]="付二";dr["address"]="c";dr["age"]=22;dt.Rows.Add(dr);}

解决方案十四:
引用楼主fsxcc的帖子:

我现有一DATATABLE里面的数据如下nameaddressage付一A18付二b20付二b21付二c22我想合成这样的一个datatablenameaddressage付一A18付二b,c63如何能实现啊...思路不太清楚.我理解的就是根据name列里面的数据判断一样的话,就让address列的数据+=用逗号分开再把他们的age列数据相加.…

不如在SQL中处理,呵呵!createfunctionfd(@vavarchar(10))returnsvarchar(8000)asBEGINDECLARE@svarchar(8000)set@s=''select@s=@s+','+addressfrom(SELECTDISTINCTNAME,ADDRESSFROMTB)ASTwhere[NAME]=@vareturn@sENDSELECTT1.*,T2.AGEFROM(select[NAME],dbo.fd([NAME])ADDRESSfrom(SELECTDISTINCTNAME,ADDRESSFROMTB)ASTGROUPBY[NAME])AST1,(SELECTNAME,SUM(AGE)AGEFROMTBGROUPBYNAME)AST2WHERET1.NAME=T2.NAME

解决方案十五:
引用13楼SQL77的回复:

引用楼主fsxcc的帖子:我现有一DATATABLE里面的数据如下nameaddressage付一A18付二b20付二b21付二c22我想合成这样的一个datatablenameaddressage付一A18付二b,c63如何能实现啊...思路不太清楚.我理解的就是根据name列里面的数据判断一样的话,就让address列的数据+=用逗号分开…

createfunctionfd(@vavarchar(10))returnsvarchar(8000)asBEGINDECLARE@svarchar(8000)set@s=''select@s=@s+','+addressfrom(SELECTDISTINCTNAME,ADDRESSFROMTB)ASTwhere[NAME]=@vareturn@sENDSELECTT1.*,T2.AGEFROM(select[NAME],dbo.fd([NAME])ADDRESSfrom(SELECTDISTINCTNAME,ADDRESSFROMTB)ASTGROUPBY[NAME])AST1,(SELECTNAME,SUM(AGE)AGEFROMTBGROUPBYNAME)AST2WHERET1.NAME=T2.NAME

改成SQL形式

时间: 2024-07-29 07:16:16

DATATABLE数据问题的相关文章

asp.net将datatable数据转换为xml下载

问题描述 asp.net将datatable数据直接转换为xml并下载吗?现在的程序是将datatable数据转换为xml文件并保持在服务器,然后再下载.不知道能跳过"将datatable生成xml文件保存在服务器"这一步,直接将datatable转换成xml文件下载吗? 解决方案 解决方案二:直接将xml字符串response出来就可以了啊,指定返回的是xml,你查下文件下载,思路一样的解决方案三:有点不能理解将datatable数据转换为xml文件并保持在服务器和将datatabl

怎么吧datatable数据写到内存中?

问题描述 怎么吧datatable数据写到内存中? 解决方案 解决方案二:缓存吧解决方案三:如果在当前页面用的话就用ViewState吧!解决方案四:本来就在内存中吧,你是要做什么呢?解决方案五:你如果是说在内存中保留的话可以用Cache解决方案六:引用4楼juliohuang的回复: 你如果是说在内存中保留的话可以用Cache 我是用的cache,写到了global.asax中,就是不知道添加一条数据库者个缓存能不能得到我新添加的数据?

利用ASP.NET MVC和Bootstrap快速搭建个人博客之后台dataTable数据列表_实用技巧

jQuery dataTables 插件是一个优秀的表格插件,是后台工程师的福音!它提供了针对数据表格的排序.浏览器分页.服务器分页.查询.格式化等功能.dataTables 官网也提供了大量的演示和详细的文档进行说明,为了方便使用,这里进行详细说明. 去官网:https://www.datatables.net/ 下载最新版本是v1.10.12. 在页面引入: <link rel="stylesheet" href="~/Content_Admin/css/boots

asp.net实现导出DataTable数据到Word或者Excel的方法_实用技巧

本文实例讲述了asp.net实现导出DataTable数据到Word或者Excel的方法.分享给大家供大家参考,具体如下: /// <summary>< xmlnamespace prefix ="o" ns ="urn:schemas-microsoft-com:office:office" /> /// 导出DataTable数据到Word或者Excel /// </summary> /// <param name=&q

将DataGridViewRows转换为DataTable数据

/// <summary> /// 将DataGridViewRows转换为DataTable数据 /// </summary> /// <param name="Listrows">DataGridView的行集合</param> /// <param name="dtSource">源数据表</param> /// <param name="colum">映射

将DataTable 数据插入 SQL SERVER 数据库

原文:将DataTable 数据插入 SQL SERVER 数据库 以下提供3中方式将DataTable中的数据插入到SQL SERVER 数据库: 一:使用sqlcommand.executenonquery()方法插入 foreach (DataRow datarow in datatable.Rows) { string sql = "INSERT INTO [Table_1] ([CompanyName],[CompanyCode],[Address],[Owner],[Memo])&q

[转]asp.net中对DataTable数据进行排序、检索、合并、分页、统计

asp.net中对DataTable数据进行排序.检索.合并.分页.统计    一.排序 1 获取DataTable的默认视图 2 对视图设置排序表达式 3 用排序后的视图导出的新DataTable替换就DataTable (Asc升序可省略,多列排序用","隔开) DataView dv = dt.DefaultView; dv.Sort = "id Asc,name Desc"; dt = dv.ToTable(); 二.检索 1 设置查询字符串 2 使用Sel

利用Cache缓存数据DataTable数据提高大数据量访问性能

cache|访问|缓存|数据|性能 引言:在数据量不大的情况下,程序怎么写基本上性能差别不大,但是当我们面对数以万计的数据的时候,我想性能就是个不得不考虑的问题了,每写一个方法,每填充一笔数据都要考虑到性能问题,否则服务器将承担巨大的执行开销,如果服务器性能不好可能立即就死在那里了,所以在大数据量频繁访问的页面上,我们就必须考虑如何提高页面的性能了,本文将提供一种用cache提高访问性能的方法来解决此问题,在很大程度上提高页面加载数据的性能.本文列举的是论坛版块中帖子列表页面加载数据的实例.正文

DataTable数据导出成Excel文件的小例子_实用技巧

复制代码 代码如下: /// /// 将DataTable中的数据导出到指定的Excel文件中 /// /// Web页面对象 /// 包含被导出数据的DataTable对象 /// Excel文件的名称public static void Export(System.Web.UI.Page page,System.Data.DataTable tab,string FileName) { System.Web.HttpResponse httpResponse = page.Response;

WriteToServer将DataTable数据插入数据库,个别数据导入不正确

问题描述 从把一个excel中的数据转成DataTable,再将DataTable的内容通过WriteToServer方法插入数据库,但是插入的数据和DataTable中的值有个别不一致其中excel中的数据如图插入数据库后的数据如图有几个数据是一样的,个别数据不一样,调试的时候,在调用WriteToServer之前,看过DateTable中的数据,和excel那个截图是一致的,插入数据库后就不一样了求大神帮忙 解决方案 解决方案二: 解决方案三:两天多了,都没有人关注,请浏览过的大神帮帮忙解决