CSV запись данных в одну строку

#c# #csv

#c# #csv

Вопрос:

Я генерирую CSV, это мой код:

 public ActionResult MethodName()
{
   List<ModelName> m = new List<ModelName>();

   StringBuilder sb = new StringBuilder();

   foreach (ModelName s in m)
      {
          sb.Append(s.FName).Trim();
          sb.Append(",");
          sb.Append(s.SName).trim();
          sb.Append(","); /* I doubt you want this one */

          sb.AppendLine();
      }

  byte[] bytes = Encoding.UTF8.GetBytes(sb.ToString());
  return File(bytes, "text/comma-separated-values", "FileName.csv");

}
  

Данные, которые я получаю, выглядят примерно так, когда я нажимаю f12
FName
,SName
,Address, Zipcode
,somethingElse

Здесь я хочу иметь файл .csv, где первый столбец содержит FName, второй столбец SName, адрес третьего столбца и т.д… да, я не поместил адрес в свой код, но это легко, как только я узнаю, почему все эти данные находятся в разных строках
обновление

fname
sname

Комментарии:

1. Проверьте, как FName и SName откуда ModelName . Их можно сохранить с символом новой строки.

Ответ №1:

Попробуйте это:

 foreach (ModelName s in m)
  {
      sb.Append(s.FName.ToString().Replace("n",""));
      sb.Append(",");
      sb.Append(s.SName.ToString().Replace("n",""));
      sb.Append(","); /* I doubt you want this one */

      sb.AppendLine();
  }
  

Комментарии:

1. Я получаю сообщение об ошибке при вводе этой строки `sb.Append(s.FName. Replace(» n»,»»));` он говорит Non-invocable member ModelName.FName cannot be used like a method ?

2. @User911: вам необходимо вызвать toString перед применением метода Replace, проверьте мой отредактированный ответ

3. ваш правильный, я это исправил. но ваше решение дает тот же результат, я получаю fname в одном столбце и sname во втором столбце ниже первого — см. Мой вопрос

4. @User911: можете ли вы отладить и посмотреть, что именно s.SName s.FName содержит и?

5. когда я нажимаю f12, fname — это, например, Jack, а sname — Mack. Я думаю, это потому, что во второй строке мы говорим sb.Append(s.SName.. , что добавляем после имени, но я хочу, чтобы sname был в той же строке (следующая ячейка), а не в следующей строке