我有条件
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),则该字符串包含年龄和性别;
我想知道上面显示的相同代码,我需要做一些更改,我有两个标志吗?
如果年龄== true;那么只有字符串应该包含年龄。 如果gender == false,则字符串不应包含性别。
是否可以将此条件检查放在第一行代码中?
实现该方法的最佳和编码方式是什么?
答案 0 :(得分:1)
您可以保持简单并将其分为两部分:
是的,它更长,使用更多的内存。但它也更容易看到它正在做什么,并在未来改变逻辑:
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);
答案 1 :(得分: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(',');
根据需要添加任意数量。使用三元运算符会使其变得复杂。