用C#的 datatable 实现,求 具体代码,100分 ,测试通过的马上给 100
规则就是一张记录水果的表,表的字段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的实现,这是我工作上遇到的小模型,真正的数据库内容太多了,简单方法写不来,在页面上显示可以拼接字符串实现 展开
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 不过 给你的代码中包含了的
如果你的表中的列名没错的话 可以直接用第一段代码的
可是你也得说出规则啊,比如
表1是否每月每种水果都对应唯一的一条数据。
表1的月份是否一定是从1月开始连续?
每种水果每个月销售量不固定
这个月份就先定义三个月1月2月3月 ,但是不要一个一个取,用循环做
但是你还没回答我第一个问题。
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最后就是你想要的集合