从集合中删除空字符串的便捷方法

Bax*_*ter 1 c# linq string list

我正在寻找一种方便的方法来删除列表项与空字符串作为其值.

我知道我可以在加载到列表之前检查每个字符串以查看它是否为空.

List<string> items = new List<string>();
if (!string.IsNullOrEmpty(someString))
{
    items.Add(someString);
}
Run Code Online (Sandbox Code Playgroud)

但是,这似乎有点麻烦,特别是如果我有很多字符串要添加到列表中.

或者,我可以加载所有字符串,无论是否为空:

List<string> items = new List<string>();
items.Add("one");
items.Add("");
items.Add("two")
Run Code Online (Sandbox Code Playgroud)

然后遍历列表,如果找到空字符串,则将其删除.

foreach (string item in items)
{
    if (string.IsNullOrEmpty(item))
    {
        items.Remove(item);
    }              
}
Run Code Online (Sandbox Code Playgroud)

这些是我唯一的两个选择,也许Linq中有一些东西?

感谢您的帮助.

Dar*_*ren 5

尝试:

 items.RemoveAll(s => string.IsNullOrEmpty(s));
Run Code Online (Sandbox Code Playgroud)

或者你可以使用where以下方法过滤它们:

var noEmptyStrings = items.Where(s => !string.IsNullOrEmpty(s));
Run Code Online (Sandbox Code Playgroud)

  • 在这种情况下你甚至可以删除lambda语法,因为类型已经匹配:`items.RemoveAll(String.IsNullOrEmpty);` (3认同)