簡體   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