0

我正在尝试使用此扩展方法将HttpRequest.QueryString转换为:object[]

public static object[] ToObjectArray(this NameValueCollection nvc)
{
    var ret = new object[nvc.Count];

    var count = 0;
    foreach (string s in nvc)
    {
        var strings = nvc.GetValues(s);
        if (strings != null)
        {
            foreach (string v in strings)
            {
                ret[count] = new { s = v };
            }
        }
        count++;
    }

    return ret;
}

var args = request.QueryString.ToObjectArray();

我认为我已经很接近了,但是我遇到了以下异常:

Object of type '<>f__AnonymousType0`1[System.String]' 
cannot be converted to type 'System.Object[]'.

我错过了什么?

4

1 回答 1

1

您不需要将 v 转换为新对象,字符串已经是一个对象,因此您可以这样做:

ret[count] = v;

这是一种稍微短一些的方法,使用列表来避免必须跟上数组索引。

public static object[] ToObjectArray(this NameValueCollection nvc) {
    List<object> results = new List<object>();
    foreach (string key in nvc.Keys) {
        results.Add(nvc.GetValues(key));
    }
    return results.ToArray();
}
于 2013-10-10T22:05:21.843 回答