使用三元运算符时,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)
如果正在评估的集合中的任何项目为真,它将赋值为真。
我正在使用以下 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)
如果正在评估的集合中的任何项目为真,它将赋值为真。