Преобразование IEnumerable‹dynamic› в строку[]

У меня есть приведенный ниже код, который в основном возвращает один столбец строковых значений из БД с использованием MassiveORM.

Метод Query() возвращает IEnumerable. Я пытаюсь выяснить, как преобразовать или преобразовать это в простой массив строк.

Используя ниже, я получаю

Невозможно преобразовать объект типа «System.Object []» в тип «System.String []».

Спасибо

var response = new MakesResponse();
var tbl = new DynamicModel("SONICAPI");
string sql = "EXEC pGetMakes";
var result = tbl.Query(sql);

return new MakesResponse()
{
makes = (string[])result.ToArray(),
ExecutionTime = sw.ElapsedMilliseconds,
Result = "200",
ResultText = "OK",
Source = "DB"
};

person Ben    schedule 29.01.2018    source источник
comment
Вы знаете, как преобразовать один результат в строку?   -  person IS4    schedule 29.01.2018


Ответы (1)


Вы можете разыгрывать перечисляемые предметы. Это будет работать, только если они действительно string:

makes = result.Cast<string>().ToArray()

В противном случае вы можете вызвать ToString, если есть хорошая реализация:

makes = result.Select(o => o.ToString()).ToArray()
person Patrick Hofman    schedule 29.01.2018
comment
Привет, make = result.Cast‹string›().ToArray() дает мне Невозможно преобразовать объект типа «System.Dynamic.ExpandoObject» в тип «System.String» - person Ben; 29.01.2018
comment
@Ben Возможно, ваш результат содержит типы, отличные от строки, например, некоторые нули - person rokkerboci; 29.01.2018
comment
Так что, возможно, он содержит не string, как вы говорите, а объект типа ExpandObject. - person Patrick Hofman; 29.01.2018
comment
@ Бен Попробуй result.Cast<System.Dynamic.ExpandoObject>().Select(e => (string)((IDictionary<string, object>)e).FirstOrDefault().Value).ToArray(). - person Patrick Hofman; 29.01.2018
comment
Патрик, это дает мне набор пар ключ/значение. Ключ всегда make, который является именем столбца базы данных, значениями являются строковые значения, к которым я пытаюсь получить доступ. - person Ben; 29.01.2018
comment
Я обновил код сразу после того, как опубликовал его. Можете ли вы повторить попытку, пожалуйста? - person Patrick Hofman; 29.01.2018
comment
@ Бен Нужна дополнительная помощь? - person Patrick Hofman; 29.01.2018
comment
Если у вас больше нет вопросов, пожалуйста, примите ответ, который вы считаете наиболее полезным, поставив галочку перед этим ответом. - person Patrick Hofman; 29.01.2018