4 строки кода:
public static string ToCSV(DataTable tbl)
{
StringBuilder strb = new StringBuilder();
//column headers
strb.AppendLine(string.Join(",", tbl.Columns.Cast<DataColumn>()
.Select(s => "\"" + s.ColumnName + "\"")));
//rows
tbl.AsEnumerable().Select(s => strb.AppendLine(
string.Join(",", s.ItemArray.Select(
i => "\"" + i.ToString() + "\"")))).ToList();
return strb.ToString();
}
Обратите внимание, что значение ToList()
в конце важно; Мне нужно что-то, чтобы заставить выражение оценить. Если бы я играл в гольф, я мог бы использовать Min()
.
Также обратите внимание, что результат будет иметь новую строку в конце из-за последнего вызова AppendLine()
. Вы можете не хотеть этого. Вы можете просто вызвать TrimEnd()
, чтобы удалить его.
РЕШЕНО: проблема исходила от моего сервера, который не отвечал на рукопожатие.
<?php
use Ratchet\Server\IoServer;
use Ratchet\Http\HttpServer;
use Ratchet\WebSocket\WsServer;
use MyApp\Chat;
require dirname(__DIR__) . '/vendor/autoload.php';
$server = IoServer::factory(
new HttpServer(
new WsServer(
new Chat()
)
),
8080
);
$server->run();
Некоторые браузеры не позволяют подключаться к незащищенным веб-сокетам. Вам нужно протестировать с включенным SSL / TLS и "wss: // localhost: 8080" в качестве вашего соединения.