我有这行代码:
Ages = m.RelatedMultipleWorks.Count == 0 ?
m.RelatedLook.Age: m.RelatedLook.Age.ToString() + " | " +
m.RelatedMultipleWorks.
Select(z => z.RelatedLook.Age.ToString()).
Aggregate((current, next) => current + " | " + next)
这一行给出了这个错误:
Type of conditional expression cannot be determined because there is no implicit conversion between 'int?' and 'string'
我无法理解为什么我会收到此错误。我怎么能摆脱它?感谢。
答案 0 :(得分:1)
您的m.RelatedLook.Age
大概是int?
,但由于string
,辅助三元表达式的结果为.Aggregate
。
Ages
(大概)期望int?
;三元组的后半部分不能隐式转换为int?
,因此编译器会对你大喊大叫。这假设.Ages
是int?
,否则您应该.ToString()
检查m.RelatedLook.Age
的结果。
听起来有点臭的是将Ages
作为字符串存储 - 考虑可能使用IEnumerable<int>
代替?
我最初接近这个答案试图解释可能Ages
类型不正确,但我应该解释这是因为三元无法解析为字符串和 int?因为那些类型不相同。只需ToString
第一个年龄就可以解决编译错误。
答案 1 :(得分:1)
三元运算符期望两个输出都是相同的类型。使用以下内容:
Ages = m.RelatedMultipleWorks.Count == 0 ? m.RelatedLook.Age.ToString(): m.RelatedLook.Age.ToString() + " | " + m.RelatedMultipleWorks.Select(z => z.RelatedLook.Age.ToString()).Aggregate((current, next) => current + " | " + next),