用C#的 datatable 实现,求 具体代码,100分 ,测试通过的马上给 100

原来的数据集table1要得到如下的结果table2规则就是一张记录水果的表,表的字段createtabletest_wang2(monthnumber(5),//月份、... 原来的数据集table1 要得到如下的结果 table2
规则就是一张记录水果的表,表的字段create table test_wang2(
month number(5),//月份 、
name varchar2(10),//销售人员的名字 一个人只负责一水 果
product_name varchar2(20),//水果的名字
snumber number(10));//水果的销量
select * from test_wang2;
在数据库中查询的结果如table1,
现在我要在页面上显示为table2的样子,
不要在数据库中decode ,在csz中写datatable的实现,这是我工作上遇到的小模型,真正的数据库内容太多了,简单方法写不来,在页面上显示可以拼接字符串实现
展开
 我来答
鲁海123
2013-07-21 · TA获得超过283个赞
知道小有建树答主
回答量:306
采纳率:100%
帮助的人:325万
展开全部
DataTable dt = new DataTable();//你获取到的DataTable
  var query = from infos in dt.AsEnumerable()

                    group infos by infos.Field<string>("PRODUCT_NAME") into mymon

                    select new

                        {

                            name = mymon.Key,//产品名

                            sname=mymon.First().Field<string>("SNAME"),//

                            mon1 = (from info2 in mymon where info2.Field<string>("PRODUCT_NAME") == mymon.Key && info2.Field<string>("MONTH") == "1" select info2.Field<string>("SNUMBER")).First(),//第一月

                            mon2 = (from info2 in mymon where info2.Field<string>("PRODUCT_NAME") == mymon.Key && info2.Field<string>("MONTH") == "2" select info2.Field<string>("SNUMBER")).First(),//第二月
                            mon3 = (from info2 in mymon where info2.Field<string>("PRODUCT_NAME") == mymon.Key && info2.Field<string>("MONTH") == "3" select info2.Field<string>("SNUMBER")).First()//第三月
                        };     
    GridView1.DataSource = query;

        GridView1.DataBind();

 哥们 亲测可用

另外我也写了种 考虑到月份增长的 

DataTable dt = new DataTable();//你获取到的DataTable

var query = from infos in dt.AsEnumerable()
                    group infos by infos.Field<string>("PRODUCT_NAME") into mymon
                    select new
                    {
                        name = mymon.Key,
                        sname = mymon.First().Field<string>("SNAME"),//你的sname
                        x = (from info2 in mymon
                             group info2 by info2.Field<string>("MONTH") into mymon2
                             select new
                             {
                                 x2 = mymon2
                             })

                    };
        foreach(var x in query)
        {
            Response.Write(x.name+"--"+x.sname+"--");
            foreach(var x2 in x.x)
            {
                foreach(var x3 in x2.x2)
                {
                    Response.Write(x3.Field<string>("SNUMBER") + "--");
                }
            }
            Response.Write("<br/>");
        }

       

这个你就得对查询到的结果重新构造个datatable了 不能像上面那个那样直接绑定了

 

 

以上方法用的LINQ to DataSet  如果的你的项目不支持linq  你可以建一个.net 3.5以上的类库  把方法放里面 然后调用

追问
少了一项  你再看看你的结果跟我要的结果是否一样
追答
你别看图片啊 图片那是我自己添加的数据 所以没sname  不过 给你的代码中包含了的

如果你的表中的列名没错的话 可以直接用第一段代码的
leiyangbdwk
2013-07-20 · TA获得超过3295个赞
知道大有可为答主
回答量:4975
采纳率:12%
帮助的人:4393万
展开全部

可是你也得说出规则啊,比如

  • 表1是否每月每种水果都对应唯一的一条数据。

  • 表1的月份是否一定是从1月开始连续?

更多追问追答
追问
每种水果每个月销售量不固定

这个月份就先定义三个月1月2月3月 ,但是不要一个一个取,用循环做
追答
但是你还没回答我第一个问题。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
小自在吖
2013-07-20 · TA获得超过102个赞
知道小有建树答主
回答量:76
采纳率:0%
帮助的人:82.1万
展开全部
第一个数据表你查出来之后 table1的集合

DataView dv= table1.DefaultView;
dv.RowFilter="PRODUCT_NAME='葡萄'or PRODUCT_NAME='梨子' or PRODUCT_NAME='橘子'
or PRODUCT_NAME='香蕉'";

现在 你要查的数据都在dv里面了 然后你绑定gridview就oK了
Gridview.datasource=dv;
gridview.databind();
追问
那个数据也不用管了吗?直接就变成结果那样么
追答
对啊 DV最后就是你想要的集合
本回答被网友采纳
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式