2

値として空の文字列を持つリスト項目をドロップする便利な方法を探しています。

リストにロードする前に、各文字列をチェックして空かどうかを確認できることはわかっています。

List<string> items = new List<string>();
if (!string.IsNullOrEmpty(someString))
{
    items.Add(someString);
}

ただし、リストに追加する文字列が多い場合は特に、これは少し面倒です。

または、空かどうかに関係なく、すべての文字列をロードすることもできます。

List<string> items = new List<string>();
items.Add("one");
items.Add("");
items.Add("two")

次に、リストを繰り返し処理し、空の文字列が見つかった場合は削除します。

foreach (string item in items)
{
    if (string.IsNullOrEmpty(item))
    {
        items.Remove(item);
    }              
}

これらは私の唯一の2つのオプションですか?おそらくLinqに何かがありますか?

これについて助けてくれてありがとう。

4

3 に答える 3

7

試す:

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

または、次を使用してそれらを除外できますwhere

var noEmptyStrings = items.Where(s => !string.IsNullOrEmpty(s));
于 2013-05-03T13:20:39.350 に答える
1

ダレンの答えの拡張として、拡張メソッドを使用できます。

    /// <summary>
    /// Returns the provided collection of strings without any empty strings.
    /// </summary>
    /// <param name="items">The collection to filter</param>
    /// <returns>The collection without any empty strings.</returns>
    public static IEnumerable<string> RemoveEmpty(this IEnumerable<string> items)
    {
        return items.Where(i => !String.IsNullOrEmpty(i));
    }

そして使用法:

        List<string> items = new List<string>();
        items.Add("Foo");
        items.Add("");
        items.Add("Bar");

        var nonEmpty = items.RemoveEmpty();
于 2013-05-03T13:30:46.200 に答える