2016-11-16 40 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}")); 

只有在字典不爲空時纔會將值添加到字典中。