从字符串数组中删除所有空元素

Elm*_*lmo 37 .net c# linq vb.net list

我有这个:

List<string> s = new List<string>{"", "a", "", "b", "", "c"};
Run Code Online (Sandbox Code Playgroud)

我希望在("")不使用foreach语句的情况下快速(可能通过LINQ)从中删除所有空元素,因为这会使代码看起来很难看.

Tim*_*ter 61

你可以使用List.RemoveAll:

C#

s.RemoveAll(str => String.IsNullOrEmpty(str));
Run Code Online (Sandbox Code Playgroud)

VB.NET

s.RemoveAll(Function(str) String.IsNullOrEmpty(str))
Run Code Online (Sandbox Code Playgroud)

  • 我只想写`s.RemoveAll(String.IsNullOrEmpty);`,在这种情况下你不需要lambda. (15认同)
  • @PaoloMoretti:+1好点.但至少在VB.NET中它并不是很短:`s.RemoveAll(AddressOf String.IsNullOrEmpty)`和lamdba表明可以轻松修改它.Imho它对lambda更具可读性. (2认同)

Son*_*nül 11

List.RemoveAllString.IsNullOrEmpty()方法检查;

指示指定的字符串是null还是空字符串.

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

这是一个DEMO.


Muh*_*ani 10

s = s.Where(val => !string.IsNullOrEmpty(val)).ToList();
Run Code Online (Sandbox Code Playgroud)

  • 这应该是s = s.Where(val =>!string.IsNullOrEmpty(val)).ToList(); 他的Initial类型是`List <string>`所以你需要确保它保持`List <string>` (4认同)