我正在使用mysql-native driver。我的代码:

ResultRange MySQLTablesRange = mysqlconnection.query(`SELECT historysensor FROM TableName`);
auto historysensor = MySQLTablesRange.array.filter!(a=>a[0].coerce!string.canFind("historysensor"));


但是在发送字符串时,我得到的不是historysensor数组,而是Row([historysensor_10774], [false])这样的结构。
因此,每次获取价值时,我都需要做很多铸造工作,例如:

foreach(sensor;historysensor)
{
    writeln(sensor[0].coerce!string.split("_")[1]);
}


如何将historysensor设置为简单数组,以能够在没有[0].coerce!string的情况下工作?

最佳答案

您可以先映射它,然后再进行其他操作

auto historysensor = MySQLTablesRange.array.
   map!(a => a[0].coerce!string). // this is new
   filter!(a.canFind("historysensor"). // no need for coerce here now
   array; // convert to plain array of strings


顺便说一句,在这里使用filter可能也是一个错误,将查询的一部分放在数据库中,这样数据库可能会更有效并且更易于阅读。

09-28 14:03