21

それを行う方法はたくさんありますが、nullをチェックしてobject[]をstring[]に変換する公式APIがあるかどうかを知りたいですか?ありがとう

4

4 に答える 4

40

ArrayクラスのConvertAllメソッドとオブジェクト自体のラムダを使用して、単純な変換を実行できます。

object[] inputArray = new object[10];
string[] resultArray = Array.ConvertAll(inputArray, x => x.ToString());
于 2013-03-10T04:44:57.110 に答える
30

nullチェックを使用してを(または)に変換するメソッドがある場合は、objectArray.ConvertAll string< TInput 、TOutput>メソッドを使用してを(または)に変換できます。intobject[]string[]int[]

object[] input = ...;
string[] result = Array.ConvertAll<object, string>(input, ConvertObjectToString);
string ConvertObjectToString(object obj)
{
    return obj?.ToString() ?? string.Empty;
}

object[]に変換するときに配列内の項目をスキップする場合は、列挙可能なクラスstring[]の拡張メソッドを使用する方が便利な方法があります。

object[] input = ...;
string[] result = input.Where(x => x != null)
                       .Select(x => x.ToString())
                       .ToArray();
于 2013-03-10T04:38:25.633 に答える
2

これは、nullを含める/除外することを選択できる拡張メソッドと、含まれている場合にnullを置き換えるために使用する値です。

public static class ObjectArrayExtensions
{
    public static string[] ToStringArray(this object[] array, bool includeNulls = false, string nullValue = "")
    {
        IEnumerable<object> enumerable = array;
        if (!includeNulls)
            enumerable = enumerable.Where(e => e != null);
        return enumerable.Select(e => (e ?? nullValue).ToString()).ToArray();
    }
}

使用法:

object[] array = new object[] { 10, "hello", 5, "world", null };

var stringArray = array.ToStringArray();
// stringArray = { "10", "hello", "5", "world" }

stringArray = array.ToStringArray(true);
// stringArray = { "10", "hello", "5", "world", "" }

stringArray = array.ToStringArray(true, "empty");
// stringArray = { "10", "hello", "5", "world", "empty" }

答えを改善してくれた280Z28に感謝します。

于 2013-03-10T04:45:03.460 に答える
1

これを試して:

object[] input = {1, 2, null, 4, 5, 0.438, 7};
int[] result = input.OfType<int>().Select((o) => (int)o).ToArray();
// {1, 2, 4, 5, 7}

または、最初に実行する代替手段string

object[] input = {1, 2, null, 4, 5, 6.438, 7};
int[] result = input.Where((o) => o != null)
    .Select((o) =>
    {
        string s = o.ToString();
        int x = 0;
        int.TryParse(s, out x);
        return x;
    }).ToArray();
// { 1, 2, 4, 5, 0, 7}
于 2013-03-10T04:53:33.473 に答える