2016-11-16 44 views
1

的可变数目我有借此参数C#简单的方法来构建PARAMS列表PARAMS

params string[] additionalParameters 

我建立像这样的方法:

qsParams = new string[] {"k=" + k, "l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp }; 

这些网址参数。问题是我只想添加变量不为空或空的参数。

我可以做这样的事情:

if (string.IsNullOrEmpty(k)) 
{ 
    qsParams = new string[] {"l=" + l, "o=" + o, "s=" + s, "t=" + t, "h=" + h, "exp=" + exp }; 
} 

但是,这会变得复杂和丑陋试图处理空变量的所有不同排列。

任何人都可以建议一个简单的方法来添加参数,如果没有null?也许我可以转换为params []字符串的列表?

+0

所有这些参数在构建完成后会进入单个字符串吗? –

+0

他们总是会按顺序排列,IE会永远是K,L,O等等...如果是这样,你能不能只用一个for循环(对于字符串[]中的每个元素),还有第二个列表例如:“k =”... ect –

+0

顺序不重要。 @mybirthname的回答完成了这项工作。 –

回答

2
public static void Main(string[] args) 
    { 

     List<string> parameters = new List<string>(); 

     string k = "a"; 
     string l = null; 

     AddParam("k", k, parameters); 
     AddParam("l", l, parameters); 


     string[] result = parameters.ToArray(); 
    } 

    public static void AddParam(string paramName, string paramValue, List<string> parameters) 
    { 
     if (string.IsNullOrEmpty(paramValue)) 
      return; 

     parameters.Add(paramName + "=" + paramValue); 
    } 

你可以尝试这样的事情。

+0

太好了,谢谢,正是我需要的!虽然一个小的修复'if(string.IsNullOrEmpty(paramValue)) return;' –

+0

@NorbertNorbertson是的,我做了修复,标记答案正确,如果你帮助你:) – mybirthname

0

如果您的PARAMS总是在正确的顺序:

List<string> qsParams = new List<string>(); 
string[] paramNames = new string[] { "k", "l", "o", "s", "t", "h", "exp" }; 
for (int i = 0; i < additionalParameters.Length; i++) 
{ 
    if (!string.IsNullOrEmpty(additionalParameters[i])) 
    { 
     qsParams.Add(string.Format("{0}={1}", paramNames[i], additionalParameters[i])); 
    } 
} 
1

您可以编写返回null的方法,如果你的变量没有值:

private string GetListValue(string prefix, string value) { 
    if (String.IsNullOrEmpty(value)) { 
     return null; 
    } 
    else { 
     return prefix + value; 
    } 
} 

你可以用这个定义您的原始清单方法(仅使用2个值):

string[] rawList = { GetListValue("k=", k), GetListValue("l=", l) }; 

然后用LINQ清理列表:

string[] cleanValues = rawValues.Where(v => v != null).ToArray(); 
0

只要创建一个字典,其中的关键是参数,价值是很好的价值。

Dictionary<string, string> Parameters = new Dictionary<string, string>(); 

Parameters.Add("k", "myKValue"); 
Parameters.Add("o", "myOValue"); 

string paramaterList = string.Join("&", Parameters.Select(x => $"{x.Key}={x.Value}")); 

只有在字典不为空时才会将值添加到字典中。