如果c#中的条件在内联中获取错误

时间:2011-09-07 17:52:34

标签: c#

我正在尝试获取类似下面的字符串值

string bsgrpval;
bsgrpval =
    ConfigurationSettings.AppSettings["Pricing_IncludeALLBaseLineGroup"]=="False"
        ? string.Empty
        : bsgrp.ForEach(x => bsgrpval = bsgrpval + x.Value.ToString() + ",");

我收到以下错误:

  

由于存在,因此无法确定条件表达式的类型   'string'和'void'之间没有隐式转换

有人可以帮助我吗?

2 个答案:

答案 0 :(得分:7)

如果是这样,你就无法进行内联。 List.ForEach不返回任何内容。

condition ? x : y;

xy必须返回某些内容并且属于同一类型(或者具有隐式转换)。

也许你想要一个字符串连接。

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()));