我需要一种方法来仅获取具有以下特定问题 ID 的最新答案。
以下对象类:
Teams
Store
Employee
Answer
Question
设置:
- 每个团队都有多家商店。
- 每个商店都有多个团队。
- 每家商店也有一个收藏员工。
- 每个员工都有一家商店。
- 一些员工有答案,而且这些人对同一个问题都有多个回答,但我只关心对给定问题的最新回答。
- 所有答案都有对应的问题。
我需要运行一个包含数据库中最新答案响应计数的报告。我只能考虑每个员工的最新回复,因为员工可以每 10 分钟更改一次回复。我不在乎是否有人回答过“1”,对我来说重要的是他们最近的回答是否是“1”。
如果是我会数他们,如果不是我不会。此外,还有多个问题。所以我不能只接受最近的回答,因为我也会丢失其他问题。
现在我有以下内容,这实际上很重要,如果有任何员工曾经有过这样的回答。
var answers = _employeeService.GetAll()
.Where(p => p.Store.Teams.Any(t => t.Team.Id.Equals(teamId)))
.SelectMany(t => t.Answers)
.OrderByDescending(t => t.Answer.Created)
.GroupBy(x => new
{
AnswerId = x.Answer.Id,
AnswerNumber = x.Answer.Number,
AnswerText = x.Answer.Text,
QuestionId = x.Answer.Question.Id,
QuestionText = x.Answer.Question.Title
}).Select(x => new AnswerReport()
我将如何过滤掉它,这样我就不会重复计算人数?如果有人回答 1、2、3、4、5,他们的答案将被计算五次。
我脑子里想的是这样的:
.SelectMany(t => t.Answers)
.OrderByDescending(t => t.Answer.Created)
.SelectMostRecent(t => t.Question.Distinct())) // clearly made up
.GroupBy(x => new