> 表单值?,c#,asp.net,.net"/>

首页 > 解决方案 > 如何将 NameValueCollection 转换为 IEnumerable> 表单值?

问题描述

有人可以解释我如何转换此 NameValueCollection 中的数据以便能够调用下面的函数吗?

string ResponseHash = CalculateHash(Request.Form); // What to do here? Request.Form is a NameValueCollection


private string CalculateHash(IEnumerable<KeyValuePair<string, StringValues>> FormValues)
{

}

标签: c#asp.net.net

解决方案


您可以使用这样的扩展方法:

public static class NameValueCollectionExtensions{
    public static IEnumerable<KeyValuePair<string, StringValues>> AsEnumerable(this NameValueCollection query)
    {
        return query?.Cast<string>().Select((s, ix) => new KeyValuePair<string, StringValues>(s, query[ix])) 
            ?? Enumerable.Empty<KeyValuePair<string, StringValues>>();
    }
}

现在您应该能够以这种方式使用它:

string ResponseHash = CalculateHash(Request.Form.AsEnumerable());

推荐阅读