Я анализирую файл CSV в приложении ac # .net windows form, перенося каждую строку в созданный мною класс, однако мне нужен только доступ к некоторым столбцам И файлы, которые принимаются, не стандартизированы.То есть количество имеющихся полей может отличаться, и столбцы могут отображаться в любом столбце.
CSV Пример 1:
Position, LOCATION, TAG, NAME, STANDARD, EFFICIENCY, IN USE,,
1, AFT-D3, P-D3101A, EQUIPMENT 1, A, 3, TRUE
2, AFT-D3, P-D3103A, EQUIPMENT 2, B, 3, FALSE
3, AFT-D3, P-D2301A, EQUIPMENT 3, A, 3, TRUE
...
CSV Пример 2:
Position, TAG, STANDARD, NAME, EFFICIENCY, LOCATION, BACKUP, TESTED,,
1, P-D3101A, A, EQUIPMENT 1, 3, AFT-D3, FALSE, TRUE
2, P-D3103A, A, EQUIPMENT 2, 3, AFT-D3, TRUE, FALSE
3, P-D2301A, A, EQUIPMENT 3, 3, AFT-D3, FALSE, TRUE
...
Как видите, я никогда не узнаю формат файла, который мне нужно проанализировать, единственное, что я точно знаю, это то, что он всегда будет содержать несколько нужных мне столбцов.
Мое решениедля этого нужно было попросить пользователя ввести требуемые столбцы и установить их в виде строк, используя их запись, преобразовав это в соответствующее целое число, которое я мог бы затем использовать в качестве местоположения.
string standardInpt = "";
string nameInpt = "";
string efficiencyInpt = "";
пользователь затем введетзначение от A до ZZ.
int standardLocation = 0;
int nameLocation = 0;
int efficiencyLocation = 0;
при отправке формы.окончательные значения получают окончательные значения, выполняя оператор if else ...:
if(standard == "A")
{
standardLocation = 0;
}
else if(standard == "B")
{
standardLocation = 1;
}
...
и т. д., выполняя весь путь, если VAR1 == ZZ, а затем код повторяется для VAR2, VAR3 и т. д..
Мой класс будет выглядеть примерно так:
class Equipment
{
public string Standard { get; set;}
public string Name { get; set; }
public int Efficiency { get; set; }
static Equipment FromLine(string line)
{
var data = line.split(',');
return new Equipment()
{
Standard = data[standardLocation],
Name = [nameLocation],
Efficiency = int.Parse(data[efficiencyLocation]),
};
}
}
У меня там больше кода, но я думаю, что это подчеркивает, где я буду использовать переменные для установки индексов.
Я очень новичок в этом, и я надеюсь, что должен быть значительно лучший способ достичь этого без необходимости писать так много потенциально чрезмерной, повторяющейся логики If Else.Я думаю, что какая-то таблица поиска может быть, но я не могу понять, как реализовать это, какие-нибудь указатели на то, где я мог бы искать?