vb.net 对datatable表格进行加工+加上百分率 5C

我以表格是以datatable,其栏位有「省别」「城市」「金额」

我想要再加上「百分率」栏,但是他是「省别」来分组计算的

请问要如何实现呢?

图片说明

图片说明

图片说明

2个回答

可以后台计算好,然后建一个百分比列就行了!

Dim query = dataTable.Rows.Cast(Of DataRow)().Select(Function(x) New With {.省别 = x("省别"), .城市 = x("城市"), 金额 = Val(x("金额")), .百分率 = Val(x("金额")) / dataTable.Rows.Cast(Of DataRow)().Where(Function(y) y("省别") = x("省别")).Select(Function(y) Val(y("金额"))).Sum() }).OrderBy(Function(x) x("省别")).ThenBy(Function(x) x("金额"))
For Each x In Query
MsgBox(x.省别 + x.城市 + " " + x.金额 + " " + x.百分率 * 100 + "%")
Next
Dim query = dataTable.Rows.Cast(Of DataRow)().Select(Function(x) New With { .省别 = x("省别"), .城市 = x("城市"), 金额 = Val(x("金额")), .百分率 = Val(x("金额")) / dataTable.Rows.Cast(Of DataRow)().Where(Function(y) y("省别") = x("省别")).Select(Function(y) Val(y("金额"))).Sum() }).OrderBy(Function(x) x.省别).ThenBy(Function(x) x.金额)
weixin_40187983
weixin_40187983 是的,我把原本.OrderBy(Function(x) x("省别")).ThenBy(Function(x) x("金额")) 替代成下面你发的,但是一直有错误
大约一年之前 回复
weixin_40187983
weixin_40187983 你是让我在去除后,改成这个吧?OrderBy(Function(x) dataTable.Rows.Cast(Of DataRow)().Where(Function(y) y("省别") = x("省别")).Select(Function(y) Val(y("金额"))).Sum())
大约一年之前 回复
weixin_40187983
weixin_40187983 去除后,没有报错,就没有原本的排序而已
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 去掉 .OrderByDescending(Function(x) x.省).ThenByDescending(Function(x) x.公司价格) 报错么
大约一年之前 回复
weixin_40187983
weixin_40187983 好的,我等你
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复: 等等,好像不是这个问题
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 Where(Function(y) y("省") = x("省") -> Where(Function(y) y("省") = x.省
大约一年之前 回复
weixin_40187983
weixin_40187983 贴好了
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复weixin_40187983: 什么错误信息,贴出看下
大约一年之前 回复
weixin_40187983
weixin_40187983 我自己加下去,有报错不知道在那
大约一年之前 回复
weixin_40187983
weixin_40187983 早上好,能帮我加到原本这句,成完整句吗? query = dt.Rows.Cast(Of DataRow)().Select(Function(x) New With {.省 = x("省"), .城市 = x("城市"), .公司价格 = Val(x("公司价格")), .百分率 = Val(x("公司价格")) / dt.Rows.Cast(Of DataRow)().Where(Function(y) y("省") = x("省")).Select(Function(y) Val(y("公司价格"))).Sum()}).OrderByDescending(Function(x) x.省).ThenByDescending(Function(x) x.公司价格)
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 OrderBy(Function(x) x.省别). -> OrderBy(Function(x) dataTable.Rows.Cast(Of DataRow)().Where(Function(y) y("省别") = x("省别")).Select(Function(y) Val(y("金额"))).Sum())
大约一年之前 回复
weixin_40187983
weixin_40187983 回复操作员马善福(贵阳专业挖机): 更正,我新附的图,左边单以省来排序, 右边是以省+城市来排序的,有没有办法让,右图的省份(以加总后的),来排序省呢?然后右边的省排序就会和左边的一样了
大约一年之前 回复
weixin_40187983
weixin_40187983 再请问一下,我新附的图,左边单以省来排序, 左边是以省+城市来排序的,有没有办法让,右图的省份(以加总后的),来排序省呢?然后左边的省排序就会和左边的一样了
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 OrderBy替换成OrderByDescending,你这个需要再开一个datatable,在foreach里面添加,原来的表就不要了
大约一年之前 回复
weixin_40187983
weixin_40187983 你好,我将原本的表格,加工后。原本的表格(没有百分率的),要如何移除呢? 还有请问排序的话,order by desc 或是acs在这里的语法要怎么加呢?
大约一年之前 回复
caozhy
贵阳老马马善福专业维修游泳池堵漏防水工程 回复weixin_40187983: 看我更新的回答
大约一年之前 回复
weixin_40187983
weixin_40187983 你好,我放到我的代码内后,有报错,请你帮我看一下!感谢
大约一年之前 回复
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!
立即提问