linq - LINQ 按子句动态分组
问题描述
var query = trafficHandler.portList
.Join(
trafficHandler.timeList,
p => p.PortId,
t => t.PortId,
(p, t) => new { Port = p, Time = t })
.Join(
trafficHandler.trafficList,
pt => pt.Time.TimeId,
tr => tr.TimeId,
(pt, tr) => new { Port = pt.Port, Time = pt.Time, Traffic = tr })
.Select(x => new
{
x.Port.PortNumber,
x.Time.TimeNumber,
x.Time.DayNumber,
x.Traffic.Action,
x.Traffic.User
})
.Where(x => allowedPort.Contains(x.PortNumber) && allowedDay.Contains(x.DayNumber) && allowedTime.Contains(x.TimeNumber) && allowedUser.Contains(x.User) && allowedAction.Contains(x.Action))
.GroupBy(y => new { y.DayNumber, y.TimeNumber, y.User })
.Where(z => z.Count() >= baseline)
.OrderBy(g => g.Key.DayNumber)
.ThenBy(g => g.Key.TimeNumber)
.ThenBy(g => g.Key.User);
我如何动态地允许某些列能够分组?就像有时我需要将 y.Action 包含在 Group By 子句中一样,我不想重写每个 LINQ 查询,因为这将是很多冗余函数。阅读 Stack Overflow 上提出的其他一些类似问题,似乎您需要动态 LINQ 库,还有其他方法吗?
解决方案
推荐阅读
- mysql - mysql select option_name where column match value and have any other
- shell - 在詹金斯管道上提取部分字符串
- r - dplyr::filter() 基于 dplyr::lag() 而不会丢失第一个值
- vue.js - 在 vuejs 中导入 sequelize 模型
- sql - 将 SAS 读入文件转换为 SQL
- angular - 在 Angular 应用程序和 Firebase 集成中出现时间戳错误
- sql - 如何获取行值以与 SQL Server 中的列进行映射
- javascript - 悬停在元素上时的文件信息
- arkit - ARKit 估计垂直平面命中测试获取平面旋转
- angularjs - 否则redirectTo不起作用