将 HttpRequest.QueryString 转换为 object[]

本文关键字:object 转换 HttpRequest QueryString | 更新日期: 2023-09-27 18:34:54

我正在尝试使用以下扩展方法将 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[]'.

我错过了什么?

将 HttpRequest.QueryString 转换为 object[]

你不需要

将 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();
}