我怎么知道列名?

时间:2018-03-06 08:55:52

标签: c# datatable

我有下面的代码,我被要求在foreach部分使用列名而不是索引。我的问题是,是否可能知道dtGDIrow表列'从下面的代码中命名?谢谢!

private string UploadSummaryDatatoSQLTable(List<FinGrowthIndexSummary> lstGISum, string sqlTableName) {
        int _GDI_SUMMARY_COLS = 16;

        DataTable dtGDIrow = new DataTable();

        DataColumn idcol = new DataColumn();
        idcol.AllowDBNull = true;
        dtGDIrow.Columns.Add(idcol);

        DataColumn dateCol = new DataColumn();
        idcol.AllowDBNull = true;
        dtGDIrow.Columns.Add(dateCol);

        for (int i = 0; i < _GDI_SUMMARY_COLS; i++) {
            // GDI type
            DataColumn gdifield = new DataColumn();
            idcol.AllowDBNull = true;
            dtGDIrow.Columns.Add(gdifield);
        }

        foreach (var selcol in lstGISum) {
            DataRow row = dtGDIrow.NewRow();
            row[0] = 1;

            row[1] = selcol.SummaryDate;
            row[2] = selcol.Description;
            ....
            row[16] = selcol.CommodityExcess;
            row[17] = selcol.Overall;

            dtGDIrow.Rows.Add(row);
        }
    }

1 个答案:

答案 0 :(得分:1)

由于您正在创建dtGDIrow数据表,因此您应该在执行时指定列名,例如:

DataColumn idcol = new DataColumn("idCol", System.Type.GetType("System.Int32"));
DataColumn dateCol = new DataColumn("dateCol", System.Type.GetType("System.DateTime"));

当你在它的时候,你也可以为它们分配一个合适的数据类型,所以并非所有列都默认为String:

row["idCol"] = 1; 
row["dateCol"] = selcol.SummaryDate;

当您使用这些列时,请按名称引用它们:

            <select style="width:100%" v-model="cameras" v-on:change="selectCamera(camera)">
                <option v-model="camera.id" v-for="camera in cameras" :key="camera.id"> {{ formatName(camera.name) }} </option>
            </select>

在foreach部分,你必须自己提供一些命名逻辑。