我有一个 linq 查询,我需要进行分组以仅根据 testTypeId、testTakerId、subAreaId、subjectName、testDate.Value.Month、testDate.Value.Year 选择某个月份内的最高测试日期。
我遇到的问题是涉及嵌套列表的地方。有没有办法将数据展平以按 testTakerId、testTypeId、subAreaId、subjectName、testDate.Value.Month、testDate.Value.Year 分组。
非嵌套值(testTakerId、test.Value.Month 等)工作正常,但使用嵌套(subAreaId)值我遇到了麻烦。
var q1 = from entry in result
let testDate = entry.result.TestDate
where testDate != null
group entry by new { entry.testTakerId, entry.testInstance.Select(
sr => sr.Subject.Select(c => c.subArea.Id)), entry.testInstance.Select(
sr => sr.Subject.Select(c => c.subArea.Name)),entry.testInstance.Select(
sr => sr.testInstance.Test.TestType.Id), testDate.Value.Month,
testDate.Value.Year } into g
select g.Where(entry => entry.result.TestDate == g.Max(e => e.result.TestDate));