在C#中将Object []数组转换为string []数组?

时间:2013-03-10 04:34:36

标签: c# arrays

我有很多方法可以做但仍然想知道是否有任何官方API将object []转换为string []使用null检查?感谢

4 个答案:

答案 0 :(得分:32)

你可以使用Array类中的ConvertAll方法和对象本身的lambda对它进行简单的转换。

object[] inputArray = new object[10];
string[] resultArray = Array.ConvertAll(inputArray, x => x.ToString());

答案 1 :(得分:23)

如果您有使用空检查将object转换为string(或int)的方法,则可以使用Array.ConvertAll<TInput, TOutput> Method转换{{ 1}}到object[](或string[]):

int[]
object[] input = ...;
string[] result = Array.ConvertAll<object, string>(input, ConvertObjectToString);

如果您想在转换为string ConvertObjectToString(object obj) { return obj?.ToString() ?? string.Empty; } 时跳过object[]数组中的项目,更方便的方法可能是使用Enumerable Class的扩展方法:

string[]

答案 2 :(得分:2)

这是一个扩展方法,允许选择包含/排除空值,以及用于替换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提高答案。

答案 3 :(得分: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}