2016-11-16 4 views
1

Ich habe eine Methode zu entwickeln, die diesen ParameterC# einfache Art und Weise params Liste für variable Anzahl von params

params string[] additionalParameters 

Ich baue es so kommt:

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

Dies sind url params. Das Problem ist, ich möchte nur Parameter hinzufügen, bei denen die Variablen nicht null oder leer sind.

Ich kann diese Art der Sache tun:

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

Aber das ist kompliziert und hässlich in Gang zu bringen versuchen, alle verschiedenen Permutationen von leeren Variablen zu handhaben.

Kann jemand einen einfachen Weg vorschlagen, um die Parameter hinzuzufügen, wenn es nicht null gibt? Vielleicht eine Liste, die ich in eine params [] Zeichenfolge konvertieren kann?

+0

Sind alle diese Parameter nach dem Bau in einer einzigen Zeichenfolge zusammengefasst? –

+0

Werden sie immer in Ordnung sein, IE wird es immer K, L, O, ect ... Wenn ja, könnten Sie nicht einfach eine for-Schleife (für jedes Element in string []) verwenden und eine zweite Liste von haben Dinge wie: "k =" ... ect –

+0

bestellen nicht wichtig. Antwort von @mybirthname erledigt den Job. –

Antwort

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

Sie können so etwas versuchen.

+0

toll, danke, genau was ich brauchte! Eine kleine Verbesserung obwohl 'if (string.IsNullOrEmpty (paramValue)) zurückgeben;' –

+0

@NorbertNorbertson Ja, ich machte den Fix, markieren Sie die Antwort als richtig, wenn Ihnen geholfen :) – mybirthname

0

Wenn Ihr params sind immer in der richtigen Reihenfolge:

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

Sie eine Methode schreiben können, die null zurückgibt, wenn Ihre Variable keinen Wert hat:

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

Sie können Ihre RAW-Liste mit diesen definieren Methode (nur mit 2 Werten):

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

Dann säubern Sie die Liste mit LINQ:

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

Erstellen Sie einfach ein Wörterbuch mit dem Schlüssel der param ist und wobei der Wert gut ... der Wert.

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}")); 

Fügen Sie dem Wörterbuch nur Werte hinzu, wenn sie nicht null sind.