Entonces, lo que quiero hacer es tener una API que obtenga un par de columnas de una gran base de datos y las devuelva como CSV (texto). El problema surge si primero trato de obtenerlos, luego construyo el csv, porque la memoria se llena rápidamente (400mb para 800k filas). Esto es lo más cerca que he estado de hacerlo funcionar, pero el formato no es realmente CSV, es filas separadas por comillas, y no es una sola cadena.
public IEnumerable<string> getCSV()
{
var names = typeof(AddressBook).GetProperties()
.Select(property => property.Name)
.ToArray();
yield return string.Join(",", names);
foreach( string name in names)
var query = context.AddressBook.Select(x => string.Join(",", x.Name, x.Surname, x.BirthDate)).AsNoTracking();
foreach (string row in query)
{
yield return row;
}
}
MemoryOutOfBounds
.