我正在尝试获取类似下面的字符串值
string bsgrpval;
bsgrpval =
ConfigurationSettings.AppSettings["Pricing_IncludeALLBaseLineGroup"]=="False"
? string.Empty
: bsgrp.ForEach(x => bsgrpval = bsgrpval + x.Value.ToString() + ",");
我收到以下错误:
由于存在,因此无法确定条件表达式的类型 'string'和'void'之间没有隐式转换
有人可以帮助我吗?
答案 0 :(得分:7)
如果是这样,你就无法进行内联。 List.ForEach
不返回任何内容。
condition ? x : y;
x
和y
必须返回某些内容并且属于同一类型(或者具有隐式转换)。
也许你想要一个字符串连接。
bsgrpval = ConfigurationSettings.AppSettings["Pricing_IncludeALLBaseLineGroup"]=="False"
? string.Empty
: string.Join(',',
bsgrp.Select(x => bsgrpval = bsgrpval + x.Value.ToString()).ToArray());
答案 1 :(得分:0)
发生错误,因为.ForEach
不返回字符串。使用.Aggregate
:
string bsgrpval;
bsgrpval=ConfigurationSettings.AppSettings["Pricing_IncludeALLBaseLineGroup"] == "False" string.Empty : bsgrp.Aggregate((acc, item) => string.Concat(acc, ",", item.Value.ToString()));