我有下面的代码,我被要求在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);
}
}
答案 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部分,你必须自己提供一些命名逻辑。