C# - проверьте, существует ли столбец в CSV, прежде чем присвоить его датируемым - PullRequest
0 голосов
/ 20 марта 2020

У меня есть это:

 var productDetailsFromFile = (from row in dt.AsEnumerable()
                                          select new ProductDetails
                                          {
                                              ItemNumber = row.Field<string>("Item Number"),
                                              Cost = row.Field<string>("Cost").ToDecimal(),//custom method .ToDecimal
                                              WHQtyList = new List<int>()
                                              {
                                                  row.Field<string>("foo").ToInteger(),//custom method .ToInteger
                                                  row.Field<string>("bar").ToInteger(),
                                                  row.Field<string>("foo2").ToInteger(),
                                              }
                                          }).ToList();

Он читает информацию из файла .csv. Я пытаюсь добиться элегантного способа проверить, являются ли поля "foo", "bar" или "foo2".

В данный момент проблема заключается в том, что если из файла CSV удалить один из столбцов, столбец не в датируемой ошибке выскакивает. Я не могу заставить это работать в течение 2 часов.

То, что я по существу ищу, - как проверить, существует ли столбец, как я использую его для инициализации списка, или если столбец не существует значение по умолчанию равно 0 для каждой строки, где она не существует.

1 Ответ

0 голосов
/ 20 марта 2020

Я сделал это через метод. Мне было интересно, есть ли способ сделать это быстрее без добавления дополнительных строк кода или сделать дополнительные строки кода меньше, чем они есть сейчас.

int ContainsColumn (string columnName, DataTable table, DataRow row)
            {
                DataColumnCollection columns = table.Columns;
                if (columns.Contains(columnName))
                {
                    return int.Parse(row.Field<string>(columnName));
                }
                else
                {
                    return 0;
                }
            }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...