В настоящее время у меня есть контроллер, который читает текстовый файл, проверяет данные, а затем выводит их в представление.Мне было интересно, может быть, есть ли лучший способ выполнить мою проверку?
Здесь я читаю свой файл и проверяю.Как вы можете видеть, мой чек довольно длинный, и после того, как я добавлю еще 3 или 4 условных выражения, он может оказаться нечитаемым, если его еще нет.Любые предложения будут оценены!
using (var sr = new StreamReader(newFullPath))
{
while ((strbuild = sr.ReadLine()) != null)
{
var strArray = strbuild.Split('|');
string INum = string.Empty,
IDate = string.Empty,
site = string.Empty,
PG = string.Empty,
errors = string.Empty;
if (strArray[0] == "1")
{
FileCheck(strArray, out INum, out IDate, out site, out PG, out errors);
var model = new UploadFileValidation
{
InvoiceNumber = INum,
Errors = errors
};
validateOutput.Add(model);
}
}
return View(validateOutput);
}
Чек ниже
private void FileCheck(string[] strArray, out string INum, out string IDate, out string site, out string PG, out string errors)
{
INum = strArray[1];
IDate = strArray[2];
errors = "";
site = strArray[10];
var check = strArray.ElementAtOrDefault(11) != null;
if (check)
PG = strArray[11];
else
PG = "";
string[] errorformats = { $"Unsupported date format of {IDate}.", "Site is missing", "Invalid Pay group" };
string[] format = { "MM/dd/yyyy", "M/dd/yyyy", "MM/d/yyyy", "M/d/yyyy" };
DateTime dateTime;
if (!DateTime.TryParseExact(IDate, format, CultureInfo.InvariantCulture,
DateTimeStyles.None, out dateTime))
errors = $"{errorformats[0]}";
if (PG == "" && errors != "")
errors = $"{errors}<br>{errorformats[2]}";
else if (PG == "" && errors == "")
errors = $"{errors}<br>{errorformats[1]}";
if (site == "" && errors != "")
errors = $"{errors}<br>{errorformats[1]}";
else if (site == "" && errors == "")
errors = $"{errorformats[1]}";
}
Вот конечный результат ![Example](https://i.stack.imgur.com/pEhSW.png)