Syed Md. Kamruzzaman
Syed Md. Kamruzzaman

Reputation: 1089

Linq List to Byte Array

I search in google, stackoverflow but did not get easy answer. Is there any way to convert a linq list to byte array?

public FileResult GetCustomerListCSV()
{
  List<Customer> CustomerList = new List<Customer>();
  CustomerList = dbContext.Customer.ToList(); // Need to convert this into byte array
  return File(CustomerList, "text/csv", "CustomerList.csv");
}

Please help.

Upvotes: 0

Views: 201

Answers (1)

Pavel Tupitsyn
Pavel Tupitsyn

Reputation: 8986

You have to create a CSV string first, then convert it to bytes:

var lines = CustomerList.Select(c => $"{c.Id}, {c.Name}");
var csv = string.Join(Environment.NewLine, lines);
var bytes = Encoding.UTF8.GetBytes(csv);
return File(bytes, "text/csv", "CustomerList.csv");

Alternatively, using CsvHelper library:

using var ms = new MemoryStream();
using var writer = new StreamWriter(ms);
using var csv = new CsvWriter(writer, CultureInfo.InvariantCulture);
        
csv.WriteRecords(CustomerList);
csv.Flush();
ms.Seek(0, SeekOrigin.Begin);

return File(ms, "text/csv", "CustomerList.csv");

Upvotes: 1

Related Questions