Mam listę, którą chcę napisać do ciągu CSV.Ogólna lista do ciągu CSV
Przykłady, które znalazłem wszystkie wydają się być dla pojedynczych list przedmiotów, moje ma wiele przedmiotów.
Obecny kod to;
private static string CreateCSVTextFile<T>(List<T> data, string seperator = ",") where T : ExcelReport, new()
{
var objectType = typeof(T);
var properties = objectType.GetProperties();
var currentRow = 0;
var returnString = "";
foreach (var row in data)
{
var currentColumn = 0;
var lineString = "";
foreach (var info in properties)
{
lineString = lineString + info.GetValue(row, null) + seperator;
currentColumn++;
}
if (seperator != "")
{
lineString = lineString.Substring(0, lineString.Count() - 2);
}
returnString = returnString + Environment.NewLine + lineString;
currentRow++;
}
return returnString;
}
Ale kiedy lista jest duża, ta metoda trwa bardzo długo.
Klasa, której moja lista opiera się na wyglądzie;
internal class ClientMasterFile
{
public String COL1{ get; set; }
public String COL2{ get; set; }
public String COL3{ get; set; }
public String COL4{ get; set; }
public String COL5{ get; set; }
public String COL6{ get; set; }
public String COL7{ get; set; }
public String COL8{ get; set; }
public String COL9{ get; set; }
public String COL10{ get; set; }
public String COL11{ get; set; }
public String COL12{ get; set; }
}
Czy jest szybszy sposób to zrobić przy użyciu zaawansowanej wersji String.Join?
Dzięki
Używasz ciąg konkatenacji. Użyj 'StringBuilder'. – Romoku
Utwórz nadpisanie metody ToString() w swoim ClientMasterFile i nie będziesz potrzebować Reflection, ponieważ to zajmuje tak dużo czasu. –