繁体   English   中英

C# - 在将其分配给数据表之前检查 CSV 中的列是否存在

[英]C# - check if column in CSV exists before assigning it to datatable

我有这个:

 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,其中不存在。

我是通过一种方法做到的。 我想知道是否有一种方法可以更快地完成它,而不必添加额外的代码行或使额外的代码行少于现在的代码行。

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;
                }
            }

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM