将IEnumerable<dynamic>转换为string[]

4
我有以下代码,基本上使用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"
};

你知道如何将单个结果转换为字符串吗? - IS4
1个回答

10

您可以转换可枚举项。这只适用于它们实际上是string的情况:

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

否则,您可以调用ToString,如果有良好的实现:

makes = result.Select(o => o.ToString()).ToArray()

嗨,makes = result.Cast<string>().ToArray() 给我返回了无法将类型为 'System.Dynamic.ExpandoObject' 的对象转换为类型 'System.String' 的错误。 - Ben
所以也许它并不包含一个“string”,正如你所说,而是一个类型为“ExpandObject”的对象。 - Patrick Hofman
1
@Ben 请尝试使用result.Cast<System.Dynamic.ExpandoObject>().Select(e => (string)((IDictionary<string, object>)e).FirstOrDefault().Value).ToArray() - Patrick Hofman
@Ben 需要更多帮助吗? - Patrick Hofman
如果您没有更多问题,请通过在答案前面勾选复选框来接受您认为最有帮助的答案。 - Patrick Hofman
显示剩余3条评论

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接