Лучший способ конвертировать Object [] в String [] или List <String>
У меня есть строка данных. Я могу получить элементы в нем, используя свойство dataRow.ItemArray
, которое имеет тип object[]
.
Мне нужно преобразовать это в String[]
или List<String>
Я вижу методы ToArray<>
и ToList<>
. но не знаю, как его использовать. Непременно помогите.
Спасибо в Advance
Ответы
Ответ 1
У вас есть два варианта в зависимости от реальных объектов в dataRow.ItemArray
Если в объекте есть фактически строковые объекты, вы можете просто выделить элемент.
dataRow.ItemArray.OfType<string>().ToList();
но если объекты имеют другой тип, например int или что-то еще, вам нужно преобразовать строку в строку (в этом примере с .ToString()
, но в вашем случае может потребоваться другой настраиваемый метод
dataRow.ItemArray.Select(o => o.ToString()).ToList();
Edit:
Если вам не нужны List<string>
или string[]
явно, вы можете оставить .ToList()
и получить IEnumerable<string>
.
Ответ 2
object[] a = new object[10];
string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString())
(нужная строка - вторая)
Ответ 3
List<string> strList = objArray.Cast<String>();
Сначала вы можете сначала проверить нули:
List<string> strList = objArray.Select( o => o == null ? String.Empty : o.ToString() ).ToList();
Ответ 4
Вы можете использовать System.Array.ConvertTo
с System.Convert.ToString
в качестве делегата.
Ответ 5
ToArray и ToList не будут делать то, что вы хотите, поскольку они возвратят только массив объектов или список. Сначала вам нужно массировать данные в строки, а Select
может помочь. Попробуйте следующее:
dataRow.ItemArray.Select(i => i == null ? string.Empty : i.ToString()).ToArray();