我正在寻找一种更有效的方法来构建多个数据库列的分号分隔列表。我现在使用的代码看起来像这样(和它的作品):访问多个数据库列的更有效方法
//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()”吗?
经过一番头脑风暴之后,我想出了没有比这更高效的任何东西,比如建立一个单独的函数来创建字符串本身。所有的列都是唯一的可为空的布尔值,并且所有的列都有唯一的字符串输出。
还是我有效地访问这些元素足够有效而不用担心它?
谢谢!
倒叙帽子里的猫。事物1和事物2 ... –
您可以编写一个查询,在一次读取中获取所有值,然后使用linq-to-object中的结果来创建字符串。 – frenchie