我正在寻找一种更有效的方法来构建多个数据库列的分号分隔列表。我现在使用的代码如下所示(并且有效):
//Process List of things
var things = DB.DbColumn_1.HasValue ? DB.DbColumn_1.Value.Equals(true) ? "thing 1;" : "" : "");
things += DB.DbColumn_2.HasValue ? DB.DbColumn_2.Value.Equals(true) ? "thing 2;" : "" : "");
things += DB.DbColumn_3.HasValue ? DB.DbColumn_3.Value.Equals(true) ? "thing 3;" : "" : "");
things += DB.DbColumn_4.HasValue ? DB.DbColumn_4.Value.Equals(true) ? "thing 4;" : "" : "");
// Remove final ';' from thing list if non-empty
things = things.Length > 0 ? things.Substring(0, things.Length-1) : things;
实际上,我有大约 8 列要处理——这个例子为你省去了一些。所以我有一大段丑陋的代码来构建一个简单的字符串。尽管这似乎工作得很好,但对于我正在尝试做的事情来说,似乎代码太多了。另外,在这种情况下我应该警惕使用“.Equals()”吗?
经过一番头脑风暴后,我想出了比这更有效的方法,例如构建一个单独的函数来创建字符串本身。所有列都是唯一的可为空的布尔值,并且对于结果列表都有唯一的字符串输出。
或者我是否足够有效地访问这些元素而不用担心它?
谢谢!