2016-11-16 9 views
1

の可変数のためのparamsリストを作成する簡単な方法は、私はこのようにそれを構築しています。このパラメータにのC#のparams

params string[] additionalParameters 

を取る方法があります。問題は、変数がnullでも空でもないパラメータを追加することだけです。

私はこの種のもの行うことができます。

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

このようなことを試すことができます。

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

あなたはこれであなたの生のリストを定義することができますあなたの変数に値がない場合は、nullを返すメソッドを書くことができます

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])); 
    } 
} 
+0

素晴らしい、ありがとう、ちょうど私が必要としたもの!もしもif(string.IsNullOrEmpty(paramValue))の小さなフィックス return; ' –

+0

@NorbertNorbertsonはい私は修正をしました。 – mybirthname

0

メソッド(2つの値のみを使用):

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

リストをLINQでクリーンアップします。

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

:あなたのparamsは、正しい順序で常にある場合

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

ヌルでない場合にのみ、値を辞書に追加します。