Мне нужно загрузить отчет в другую другую систему, система имеет собственную предопределенную структуру отчетов, которые они принимают.Эти отчеты в нашей системе генерируются на основе кода, который выбирает пользователь.
Пользователь не заботится о столбце, который он хочет экспортировать в отчетах, ему нужно только выбрать code
изUI.Наша система сгенерирует, загрузит нужный формат CSV со ссылкой на code
, который будет использоваться в качестве отчета для загрузки в другую систему.
Заголовки и количество столбцов в файлах CSV отличаются в зависимости от типа кода, который выбирает пользователь.
Как я подошел:
public ActionResult GetFileResult(string code)
{
var record = new Employee().GetEmployeeData(code);
var csvResult = GetCSVResult(code, record);
return csvResult;
}
private string GetCSVResult(string code, List<Employee> employees)
{
//How can i model here the GetCSVResult to convert
//the List of employees to CSV with refrence to code
//the value on the code will determine which format to used for the csv result.
}
Здесь, вМетод GetCSVResult
. Я могу использовать несколько операторов if
или switch-case
для вызова другого метода, который имеет собственную реализацию преобразования списка в CSV, но есть как минимум 20 различных конфигураций CSV, которые приведут к нескольким операторам if иЛот метода.
public class Employee
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string DOB { get; set; }
public string StartDate { get; set; }
public string SSN { get; set; }
public bool PreviousEmployee { get; set; }
public List<Employee> GetEmployeeData(string code)
{
return new List<Employee>();
}
}
Формат исходных данных имеет следующую структуру.то есть значение, возвращаемое из GetEmployeeData
FirstName | LastName | SSN | StartDate | DOB | PreviousEmployee
------------------------------------------------------------------------------------------
Jane | Smith | 111111121 | 01/03/2018 | 01/01/1983 | true
John | Smith | 111111111 | 01/01/2018 | 01/01/1970 | true
Jeff | Smith | 111111122 | 01/03/2018 | 01/01/1983 | false
Теперь мне нужно преобразовать эти данные в файлы CSV (или некоторые в XML) с другой конфигурацией файлов.
Подобные примеры:
Некоторые форматы могут быть такими:
Формат 1:
FirstName,LastName,SSN,AppStartDate,AppDOB
Jane,Smith,111111121,01/03/2018,01/01/1983
John,Smith,111111111,01/01/2018,01/01/1970
Jeff,Smith,111111122,01/03/2018,01/01/1983
Формат 2:
EMP_FIRST_NAME,EMP_LAST_NAME,EMP_SSN,EMP_DOB,EMP_JOB_START_DATE,PREV_EMPLOYED_BY_EMPLOYER
Jane,Smith,111111121,01/03/2018,01/01/1983,Y
John,Smith,111111111,01/01/2018,01/01/1970,Y
Jeff,Smith,111111122,01/03/2018,01/01/1983,N
Формат в примерах отличается от типа Code
.Формат имеет структуру, определяемую значением в коде.
Итак, есть ли какие-либо предложения для какого-либо общего пути к этому типу сценария?Или какие-нибудь предложения для некоторого образца?
Для преобразования в CSV я смотрю на эту тему
https://medium.com/@utterbbq/c-serializing-list-of-objects-to-csv-9dce02519f6b