C# 使用namevaluecollection在数组中设置查询字符串

C# 使用namevaluecollection在数组中设置查询字符串,c#,arrays,list,foreach,namevaluecollection,C#,Arrays,List,Foreach,Namevaluecollection,我的URL格式为: workareaRefs=1&workareaRefs=2&workareaRefs=3&jurisdictions=1&jurisdictions=2&jurisdictions=4&tags=1&tags=2 等等。如何将所有这些值存储为3个单独的数组作为对象?我将使用它们在查询中进行筛选。下面的方法写得不正确。我不知道该怎么办 谢谢 public (string[] workareaRefs, strin

我的URL格式为:

workareaRefs=1&workareaRefs=2&workareaRefs=3&jurisdictions=1&jurisdictions=2&jurisdictions=4&tags=1&tags=2
等等。如何将所有这些值存储为3个单独的数组作为对象?我将使用它们在查询中进行筛选。下面的方法写得不正确。我不知道该怎么办

谢谢

    public (string[] workareaRefs, string[] jurisdictions, string[] tags) FiltersQS(NameValueCollection parameters)
    {
        var workAreaRefs = new List<string>();
        var jurisdictions = new List<string>();
        var tags = new List<string>();

        if (WorkAreas.Count == 0 && workAreaRefs.Count == 0)
        {
            foreach (var workAreaRef in parameters["workarearef"])
            {
                workAreaRefs.Add(workAreaRef);
            }
        }

        if (Jurisdictions.Count == 0 && jurisdictions.Count == 0 )
        {
            foreach (var jurisdiction in parameters["jurisdictionref"])
            {
                workAreaRefs.Add(jurisdiction);
            }
        }

        if (Tags.Count == 0 && tags.Count == 0)
        {
            foreach (var tags in parameters["tags"])
            {
                tags.Add();
            }
        }

        return (workAreaRefs, jurisdictions, tags);
    }
public(string[]workareaRefs,string[]辖区,string[]标记)过滤器QS(NameValueCollection参数)
{
var workAreaRefs=新列表();
var=newlist();
var tags=新列表();
if(WorkAreas.Count==0&&workAreaRefs.Count==0)
{
foreach(参数[“workAreaRef”]中的var workAreaRef)
{
workAreaRefs.Add(workAreaRef);
}
}
if(辖区数==0&&辖区数==0)
{
foreach(参数[“辖区参考”]中的var辖区)
{
工作区参考添加(辖区);
}
}
if(Tags.Count==0&&Tags.Count==0)
{
foreach(参数[“标记”]中的var标记)
{
tags.Add();
}
}
返回(工作区参考、辖区、标签);
}
//为什么要创建列表???为什么不使用传递的数组呢
//用你的方法???
//您不应该试图用
//与传递给方法的参数同名
公共(字符串[]工作区引用、字符串[]辖区、字符串[]标记)筛选器QS(NameValueCollection参数)
//不要使用相同的名称
//作为传递给方法的参数名称的局部变量
//更改了列表变量名
var workAreaRefs=新列表();
var=newlist();
var tagss=新列表();
//更改您的if语句
//if(WorkAreas.Count==0&&workAreaRefs.Count==0)//否
如果(workareaRefs.Length>0)//是
{
foreach(参数[“workAreaRef”]中的var workAreaRef)
{
workAreaRefs.Add(workAreaRef);
}
//只能使用方法参数
//foreach(workareaRefs中的var workAreaRef)
//{
//workAreaRefs.Add(workAreaRef);
//}
}
//其他国际单项体育联合会需要进行上述修改

编辑之后,现在您的url格式似乎使用了与服务器端方法相同的参数名称,您的代码就是这样开始的吗?您可能想查看我的简单QueryStringHelper库,它使此类内容变得简单-(只有一个类)@KarimAli如果这篇文章有帮助,请告诉我。谢谢
    //Why are you creating lists??? Why not just use the arrays which are passed
    //To your method???
    //You shouldn't be trying to declare local variables with
    //the same names as the parameters being passed to the method
    public (string[] workareaRefs, string[] jurisdictions, string[] tags) FiltersQS(NameValueCollection parameters)

    //Don't use the same names
    //for local variables as the names of parameters being passed to method
    //Changed the list variable names
    var workAreaRefs = new List<string>();
    var jurisDictions = new List<string>();
    var tagss = new List<string>();

    //Change your if statements
    //if (WorkAreas.Count == 0 && workAreaRefs.Count == 0) //NO
    if(workareaRefs.Length > 0) //Yes
    {
        foreach (var workAreaRef in parameters["workarearef"])
        {
            workAreaRefs.Add(workAreaRef);
        }

        //Could just use the method parameter
        //foreach (var workAreaRef in workareaRefs)
        //{
            //workAreaRefs.Add(workAreaRef);
        //}


    }

    //etc. Other ifs need modified like above