2015-01-27 3 views
0

У меня есть коллекция (List<ProfileDo>), которая имеет следующую структуру ...Создание CSV из списка без дублирования некоторых столбцов

ProfileDo 
- StartDateTime 
- EndDateTime 
- Volume 

Я пытаюсь создать CSV-файл, который выглядит,

"StartDateTime", "EndDateTime", "Volume" 

Я изо всех сил пытаюсь найти способ остановить дублирование «StartDateTime», «EndDateTime», добавляемого в каждый профиль csv, и просто использовать его один раз и использовать том из других. Любая помощь оценивается.

+0

Что вы попробовали? –

ответ

0

Это может звучит проводная, но она могла бы работать,

Вы можете создать Dictionary как Dictionary<string, List<int>>. И объедините StartDateTime и EndDateTime в строку, такую ​​как StartDateTime_EndDateTime. Теперь, когда вы добавляете тома, вы объединяете релевантные StartDateTime и EndDateTime и сравниваете их существование, используя ContainsKey().

Если ключ существует, добавьте Volume в соответствующий список, иначе мы создадим новую запись и добавим.

This пример может быть полезным.

0

Если я правильно понимаю, что вам нужно, это похоже на переключение уровня 2, что мы называли написанием программ cobol. Убедитесь, что список отсортирован по StartDateTime и EndDateTime. Затем, когда вы зацикливаете, вам нужно сохранить текущие StartDateTime и EndDateTime, если это не то же самое. Что-то вроде этого:

DateTime? currentStartDatetime = null; 
DateTime? currentStartDatetime = null; 
string line; // can use string builder for performance.. 

foreach (var profile in profiles) 
{ 
    line = string.Empty; 

    if (currentStartDateTime != profile.StartDateTime) 
    { 
    currentStartDateTime = profile.StartDateTime; 
    line += profile.StartDateTime + ","; 
    } 
    else 
    { 
    line += ","; 
    } 

    if (currentEndDateTime != profile.EndDateTime) 
    { 
    currentEndDateTime = profile.EndDateTime; 
    line += profile.EndDateTime + ","; 
    } 
    else 
    { 
    line += ","; 
    } 

    line += profile.Volume; 

    Csv.WriteLine(line); 
} 
Смежные вопросы