Как можно манипулировать различными видами массивов (string, int, char) в том же формате, что и строка в C #? - PullRequest
0 голосов
/ 17 мая 2011

У меня есть коллекция объектов, каждый из которых содержит различные типы массивов (string [], int [], char []) или даже одно значение в качестве различных типов.

Я хочу получить значения каждого массива в виде единого формата, такого как строка, и преобразовать его в текстовое значение запятой.

вот код, который управляет объектом коллекции как "UInt16 [] "

UInt16[] arrCapabilities = (UInt16[])(queryObj["Capabilities"]);
foreach (UInt16 arrValue in arrCapabilities)
{
    Console.WriteLine("Capabilities: {0}", arrValue);
}

Ответы [ 4 ]

3 голосов
/ 17 мая 2011

Вы можете попробовать использовать следующий код:

IEnumerable array = queryObj["Capabilities"] as IEnumerable;
if(array != null)
{
    foreach(var item in array)
    {
        Console.WriteLine(item.ToString());
    }
}
else
{
    Console.WriteLine(queryObj["Capabilities"].ToString());
}
1 голос
/ 17 мая 2011

Чтобы развернуть ответ Дэниела и получить строку csv, за которой вы:

IEnumerable array = queryObj["Capabilities"] as IEnumerable;
if(array != null)
{
     var csvString = String.Join(", ", array.Cast<object>().Select(x => x.ToString()));
     Console.WriteLine(csvString);
}
else
{
    Console.WriteLine(queryObj["Capabilities"].ToString());
}
1 голос
/ 17 мая 2011

Вы можете использовать LINQ для преобразования вашего массива в IEnumerable из строки:

var myStrings = from c in arrCapabilities select c.ToString();
0 голосов
/ 17 мая 2011

Помогает ли это?

void WriteToConsole<T>(IEnumerable<T> items)
{
    foreach (var item in items)
        Console.WriteLine("Capabilities: " + item);
}
...