postgresql - 使用 Linq2DB for PostgreSQL 按周分组
问题描述
我正在为 PostgreSQL 使用 Linq2DB。我需要在 Linq 中按周对数据进行分组。下面是我的代码:
Func<DateTime,int> weekProjector = d => CultureInfo.CurrentCulture.Calendar.GetWeekOfYear(d,
CalendarWeekRule.FirstFourDayWeek,
DayOfWeek.Sunday);
var ddquery = from t in db.VLogData
group t by weekProjector(t.NewTime);
foreach (var f in ddquery)
{
f.Key.ToString();
}
但它在那里显示错误或foreach
(xxx.Controllers.DashboardController+<>c__DisplayClass1_0).weekProjector, selectParam.NewTime)'无法转换为 SQL。'
我可以知道那里有什么问题吗?
解决方案
weekProjector
是一个客户端函数,但您将服务器端数据作为输入传递给它。要使其工作,您可以:
AsEnumerable()
通过在 Select 和调用之间粘贴调用来在客户端上执行分组GroupBy
(有史以来最糟糕的选择)Sql.ExpressionAttribute
通过应用或Sql.ExtensionAttribute
使用weekProjector
SQL 表达式并IsAggregate=true
设置属性来告诉 linq2db 使用哪个聚合逻辑- 与之前相同,但
ExpressionMethodAttribute
使用 C# 表达式定义聚合逻辑
推荐阅读
- c++ - 如何获取向量循环的int位置
- python - 文件夹路径中的反斜杠通过其他工具更改为浏览路径上的正斜杠
- javascript - 同时按列分页和过滤Angular 6
- ios - 我应该使用 NSUserDefault、字典、核心数据 - 还是其他东西?
- python - Python re.sub 单词后的数字组
- laravel - Laravel 服务提供者和容器说明
- python - 如何使用 opencv 向 PYQT 显示图像
- spring - 如何使用 Spring 批处理 FlatFileItemReader 仅读取 CSV 文件中的子集列?
- c# - RDLC 文本框行高/行距
- excel - Excel 中的仪表板