使用三元运算符时,IEnumerable 未填充预期数据

IEnumerable is not populating with expected data when using a ternary operator

我正在使用以下 IEnumerable 创建 EncounterEvents

除最后一个 属性 外,一切都很好,它被称为 IsManaged

这是一个布尔值,如果组中的 EncounterTypeId 值中至少有一个是 99,我希望它是 true

但即使我已经验证至少有一个 EncounterTypeId 是 99,它总是错误的。

如果像IsManaged = true那样手动设置的话也可以

这是我的代码:

var encounterList = dungeonResults.GroupBy(x => new { x.GameType, x.GameId })
 .Select(group => new EncounterEvents
 {
     CharacterName = group.Select(g => g.GeneratedName).FirstOrDefault(),
     EncounterId = group.Select(g => g.ChapterId).FirstOrDefault().ToString(),
     EncounterName = String.Join("; ", group.Select(g => g.ChapterName).ToArray()),
     IsManaged = group.Select(g => g.EncounterTypeId).FirstOrDefault() == 99 ? true : false
 })
 .ToList();

我需要做些什么才能正确填充它吗?

谢谢!

表达式 group.Select(g => g.EncounterTypeId).FirstOrDefault() 仅计算组中的第一条记录,在您的情况下它可能不是 99。

你最好使用 group.Any(g => g.EncounterTypeId==99).

澄清一下,最终的表达方式是: IsManaged = group.Any(g => g.EncounterTypeId==99)

如果正在评估的集合中的任何项目为真,它将赋值为真。