我需要一種方法來獲取最新的答案,其中具有特定的問題ID給出以下內容。根據三個字段選擇最近的Lambda
以下對象類:
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
爲了清晰起見做了一些修改。 –
你的Answer應該有一個'Answer Time'字段,這樣我們就可以命令'Answers'獲得最近的答案(是字段'Created'?)? –
@KingKing:可能是Answer.Created? –