2016-09-28 6 views
0

私は条件三元演算子内の余分な条件は可能ですか?

 string columns = (protocol == null || protocol == 5) ? "Patient Id,Patient Initial,DOB,Age,Height,Weight,BMI,Occupation,Nationality,Education,Race,Gender,MaritalStatus," : "Patient Id,"; 

ので、その基本的に文字列を設定することがあります。私はちょうどprotocoltタイプをチェックし、上記のコードのように文字列を設定していますここ

何私は条件が真の場合

var age=false; 
    var gender=false; 

通常、いくつかのフラグが(protocl = 5)文字列は、年齢が含まれていません性別。

私は上記と同じコードを知りたがっていますが、私はいくつかの変更を加える必要があります。私は2つのフラグを持っていますか?

age == trueの場合。文字列には年齢が含まれている必要があります。 gender == falseの場合、文字列には性別を含めることはできません。

この状態チェックを最初の1行のコード自体に入れることは可能ですか?

これを実装するには、どのようにコード化された最良の方法がありますか?

+9

_ "これを実装するのに最適で、コード化されていない方法はありますか?" _最も良い方法は必ずしもコードを書く必要はありません可能な限り短く、すべてを1行に収めるようにしてください。 _you_が理解して維持しやすいコードを書く。 –

+1

*他人が理解して維持するのも簡単です:) – Charleh

+0

論理は本当に明確ではありません。あなたの条件演算子は、protocolがnullか5かどうかをチェックし、すべてのフィールド(前述の年齢と性別だけでなく)を返します。そうでなければ、 "Patient Id"を返します。それは理にかなっていますか? –

答えて

1

あなたにもそれをシンプルに保つ2つの部分に分割可能性がありますはい、それは長く、もう少しメモリを使います。

int? protocol = 5; 
var age = false; 
var gender = false; 

var columnList = new List<string>(); 
columnList.Add("Patient Id"); 

if (protocol == null || protocol == 5) 
{ 
    columnList.Add("Patient Initial"); 
    columnList.Add("DOB"); 

    if (age) 
    { 
     columnList.Add("Age"); 
    } 

    columnList.Add("Height"); 
    columnList.Add("Weight"); 
    columnList.Add("BMI"); 
    columnList.Add("Occupation"); 
    columnList.Add("Nationality"); 
    columnList.Add("Education"); 
    columnList.Add("Race"); 

    if (gender) 
    { 
     columnList.Add("Gender"); 
    } 

    columnList.Add("MaritalStatus"); 
} 

string columns = string.Join(",", columnList); 
0

使用

int? protocol = 5; 
     bool age = true; 
     var gender = true; 
     string columns = ""; 
     if (protocol == 5) 
     { 
      columns += "Patient Id,"; 
     } 

     if (age) 
     { 
      columns += "Age,"; 
     } 

     if (gender) 
     { 
      columns += "Gender,"; 

     } 
     columns += columns.TrimEnd(','); 

あなたが望むようかのように多くの追加。三項演算子を使用すると複雑になります。カンマ区切りの文字列

にリストを変換するあなたは

  • する列のリストを作成します

  • +0

    あなたは説明できますか?私は文字列内の各項目のフラグを持っていると思う、それぞれのフラグが真であれば表示する必要があります。だから私は条件を確認する必要があります各項目のためのdob、年齢、高さ、..etcすべてはそれぞれのフラグを持っています。 –

    +0

    http://rextester.com/FLD80835それが動作しない –

    +0

    ブールの年齢=真であるため、返される年齢。あなたはそれを他の方法で管理したいですか? –