Мне приходилось делать это несколько раз, и вам лучше всего обернуть ваше имя.Это означает, что вам придется обрабатывать это отдельно (вроде).
Исходя из того, что я читаю в вашем вопросе, вы извлекаете значения из БД с тремя столбцами: Name
(LName, FName), Position
и Date
.Итак, ваш SQL-оператор выглядит примерно так: SELECT Name, Position, [Date] FROM Table WHERE ...
И, возможно, у вас где-то есть устройство для чтения данных.
Исходя из этих предположений, я бы сделал следующее:
//SQL Connection and SQL Command have been created separately as _conn and _cmd
using(SqlDataReader _read = _cmd.ExecuteReader())
{
string name = "";
string position = "";
string date = "";
while(_read.Read()) //don't really do this, make sure you're checking for nulls and such
{
name = _read.GetString(0);
position = _read.GetString(1);
date = _read.GetString(2);
AddLineToLines(string.Format("{0}|{1}|{2}", name, position, date));
//AddLineToLines is a call to add to your list of lines so you can
// write your file.
}
}
Это позволит вамсоздать файл с разделителем труб (вместо CSV) и избегать экранирования запятыми.
Если у вас должен быть csv, измените последний string.Format
на
string.Format("\"{0}\",{1},{2}", name, position, date)
, который будет экранироватьзапятые между LastName и FirstName.