c# - 使用三元运算符时,IEnumerable 未填充预期数据
问题描述
我正在使用以下 IEnumerable 创建一个EncounterEvents
.
除了最后一个名为IsManaged
.
true
这是一个布尔值,如果组中的至少一个EncounterTypeId
值是 99 ,我希望它是。
但即使我已经验证了至少一个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)
如果正在评估的集合中的任何项目为真,它将分配为真。