【发布时间】:2019-03-18 11:12:38
【问题描述】:
我需要一些关于 EF 中复杂查询的帮助。
我想做什么:
对于列表中的每个用户,从具有以下结构的表中获取每天的第一个和最后一个事件的列表:
Events table:
int EventId
int UserId
DateTime Time
...other fields
Users table:
int UserId
string Name
...other fields
我目前在做什么:
- 获取我感兴趣的用户列表
- 为每个用户获取一个月内的所有事件
- 遍历事件以选择每天的第一个和最后一个事件。
这是非常低效且耗时的。我认为我能做的是:
从一个月中选择最小和最大事件,按 UserId 分组,按 Day 分组,因此最终结果如下所示:
EventId UserId Time
345 4 9:00:00 18.03.2019 //first event from 18.03
456 4 18:20:00 18.03.2019 //last event from 18.03
465 4 10:40:00 19.03.2019 //first event from 19.03
477 4 19:23:00 19.03.2019 //first event from 19.03
360 9 11:05:00 18.03.2019 //same, for different user
440 9 17:10:00 18.03.2019
466 9 10:57:00 19.03.2019
501 9 20:48:00 19.03.2019
我需要在 .Net 中使用实体框架来完成这项工作
【问题讨论】:
标签: sql .net performance entity-framework linq