Лучший способ преобразовать Object[] в String[] или List

у меня есть строка данных. Я могу получить элементы в нем, используя свойство dataRow.ItemArray типа object[]. Мне нужно преобразовать это в String[] или List<String>

Я вижу методов ToArray<> и ToList<>. но не знаю, как им пользоваться.Пожалуйста, помогите.

спасибо заранее

5 ответов


у вас есть два варианта в зависимости от фактических объектов в dataRow.ItemArray

если на самом деле есть строковые объекты в object [], вы можете просто использовать элемент wise.

dataRow.ItemArray.OfType<string>().ToList();

но если объекты другого типа, например int или что-то еще, вам нужно преобразовать в строку (в этом примере с .ToString() но в вашем случае может потребоваться другой пользовательский метод

dataRow.ItemArray.Select(o => o.ToString()).ToList();

Edit:
Если вам не нужно List<string> или string[] явно вы можете оставить .ToList() и получает .


 object[] a = new object[10];
 string[] b = Array.ConvertAll(a, p => (p ?? String.Empty).ToString())

(строка, которую вы хотите, является второй)


List<string> strList = objArray.Cast<String>();

вы можете сначала проверить наличие нулей:

List<string> strList = objArray.Select( o => o == null ? String.Empty : o.ToString() ).ToList();

можно использовать System.Array.ConvertTo с System.Convert.ToString как делегат.


ToArray и ToList не будут делать то, что вы хотите, так как они будут возвращать только массив объектов или список. Сначала вам нужно массировать данные в строки, и Select могу помочь. Попробуйте это:

 dataRow.ItemArray.Select(i => i == null ? string.Empty : i.ToString()).ToArray();