2013-01-13 26 views
35

から空の要素をすべて削除します。それは、コードが醜いに見えるので、私はforeach文を使用せずに(おそらくLINQ経由)すぐにそれからすべての空の要素を("")削除する私は、この持っている文字列配列

List<string> s = new List<string>{"", "a", "", "b", "", "c"}; 

を。

あなたが List.RemoveAllを使用することができます
+2

[重複するリストから「空の」アイテムを削除するにはどうすればよいですか?](http://stackoverflow.com/q/12849528/256431) –

+2

Btw、これは 'string'配列ではなくリストです。 –

答えて

58

C#

s.RemoveAll(str => String.IsNullOrEmpty(str)); 

VB.NET

s.RemoveAll(Function(str) String.IsNullOrEmpty(str)) 
+14

's.RemoveAll(String.IsNullOrEmpty);'と書くだけで、この場合ラムダは必要ありません。 –

+2

@PaoloMoretti:+1良い点。しかし、少なくともVB.NETではそれほど短くはありません: 's.RemoveAll(AddressOf String.IsNullOrEmpty)'とlamdbaは簡単に変更できることを示しています。 Imhoラムダでもっと読みやすいです。 –

+0

クリアされたリストではなく、削除された要素の数が返されるのはなぜですか?この 'int count = s.RemoveAll(string.IsNullOrEmpty);'は有効ですが 'List list = s.RemoveAll(string.IsNullOrEmpty);'ではありません。 –

10
s = s.Where(val => !string.IsNullOrEmpty(val)).ToList(); 
+4

これは正しくないs = s.Where(val =>!string.IsNullOrEmpty(val))。ToList();彼の初期タイプは 'List 'ですので、 'List ' – MethodMan

+0

のままであることを確認する必要があります。これはおそらくIListで動作します。 IListにはRemoveAllがありません。 – liang

11

String.IsNullOrEmpty()方法でList.RemoveAllでチェックしてください。

指定した文字列がnullか空文字列かを示します。ここで

s.RemoveAll(str => string.IsNullOrEmpty(str)); 

DEMOです。

+3

小文字の場合は「s」の場合は「string」:) – nawfal

+0

Nope。 OPは両方を使用:)単に個人的な好み.. :) – nawfal

関連する問題