首页 新闻 会员 周边

Linq GroupBy 动态分组条件。

0
悬赏园豆:100 [已解决问题] 解决于 2019-05-06 16:10

一个报表。前台三个条件,颜色尺码和批次。勾选了就显示对应的分组信息,前台会传过来是够勾选颜色,尺码,批次。如果勾选了颜色。那么GroupBy条件就是颜色分组,如果同时勾选了颜色和尺码,那么GroupBy条件就是颜色和尺码,同时勾选三个就是三个分组条件,其他可以任意组合,后台代码:
query.GroupBy(q => new { batch = pc == 0 ? "" : q.batch, outtime = q.outtime, produceNo = q.produceNo, pcolorName = ys == 0 ? "" : q.pcolorName, szName = cm == 0 ? "" : realCount = ys == 0 ? 0 : q.realCount })
.Select(q => new
{
batch = pc == 0 ? "" : q.Key.batch,
produceNo = q.Key.produceNo,
pcolorName = q.Key.pcolorName,
szName = q.Key.szName,
});
关键就在于如何生成动态条件,求教,求demo

微风的颜色的主页 微风的颜色 | 初学一级 | 园豆:116
提问于:2019-05-06 10:21

建议详细描述一下,将问题表达清楚,问题就解决了一半

dudu 4年前
< >
分享
最佳答案
0

GroupBy条件若为常量,则自动忽略

微风的颜色 | 初学一级 |园豆:116 | 2019-05-06 13:54
其他回答(3)
0

if condition1 then
var query= linq group by color

if condition2 then
var query2=linq group by size

if condition3 then
var query3= linq group by batch

收获园豆:30
爱编程的大叔 | 园豆:30839 (高人七级) | 2019-05-06 10:48

想过了可是结果一共有八种,字段比较多,我这是去掉了一大部分,字段大概有十几个。如果都写出来看起来会很臃肿的,后边还要加上select

支持(0) 反对(0) 微风的颜色 | 园豆:116 (初学一级) | 2019-05-06 10:56
0

微软怎么不给你考虑到:System.Linq.Dynamic

收获园豆:50
花飘水流兮 | 园豆:13560 (专家六级) | 2019-05-06 10:49

参考过,没有demo看起来有点吃力

支持(0) 反对(0) 微风的颜色 | 园豆:116 (初学一级) | 2019-05-06 10:52

@花飘水流兮: 谢谢,问题已解决,我的做法是三元运算符进行判断,常量则会自动忽略.不进行分组,

支持(0) 反对(0) 微风的颜色 | 园豆:116 (初学一级) | 2019-05-06 16:10
0

感觉直接拼sql更简单些

收获园豆:20
会长 | 园豆:12401 (专家六级) | 2019-05-06 10:50

最后考虑的做法了

支持(0) 反对(0) 微风的颜色 | 园豆:116 (初学一级) | 2019-05-06 10:51
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册