如何使用Null检查将通用列表中的项目转换为逗号分隔的字符串

时间:2013-09-19 16:22:45

标签: c# generics

单行。我正在尝试将List转换为逗号分隔值并在单个传递中检查空值。那么我们如何做到以下几点:

  • 检查通用List lstFoos是否为空。
  • 返回逗号分隔的字符串或字符串为空?

我已经检查了但是所有的例子都证明了这一点,没有空/列表检查。

string stringOfCommaSeparatedFoos  =  (lstFoos.Any() ? 
   string.Join(",", lstFoos.Select(x => x.fooItem)).ToArray() : 
          String.Empty);

更新 我试过这个,但它给出了null引用异常。 谢谢!

1 个答案:

答案 0 :(得分:1)

您无需检查lstFoos是否为空:

String.Join(",", lstFoos.Where(x => x != null).Select(x => x.fooItem))

如果没有要加入的内容(空序列),则默认情况下String.Join将返回空字符串:

public static string Join<T>(string separator, IEnumerable<T> values)
{   
    using (IEnumerator<T> enumerator = values.GetEnumerator())
    {
        if (!enumerator.MoveNext())        
            return Empty;            
        // ...        
    }
}

如果您有以下fooItem值:"a", "b", null, "c",则上面的代码将生成字符串"a,b,,c"