遍历DataTable中列头以d开头的列,都格式化2为小数~~
有更好的处理方式吗?
var listColumns = new List<string>();
foreach (DataTable item in SysVar.FCurryFormInfo.dsBillDataSet.Tables)
{
listColumns.Clear();
for (int i = 0; i < item.Columns.Count; i++)
{
//只处理d开头数值,i开头整形不用处理
if (item.Columns[i].ColumnName.Left(1).ToLower().Equals("d"))
{
listColumns.Add(item.Columns[i].ColumnName);
}
}
foreach (DataRow dataRow in item.Rows)
{
foreach (string str in listColumns)
{
dataRow.BeginEdit();
dataRow[str] = Math.Round(dataRow[str].ToStringExt().ToDecimalExt(0), 2, MidpointRounding.AwayFromZero);
dataRow.EndEdit();
}
}
}
如果是效率,没什么“更好”吧?如果是优雅的方式,那应该有?
更好看,更简洁也行
@[Stephen-kzx]: 第一个循环看看有没有类似:
listColumns = item.Columns.Where(c => c. ColumnName.StartWith("D") || c.ColumnName.StartWith("d")).Select(c => c.ColumnName);
只是这样的话,listColumns可以是List<Column>;
更好是什麼?效能更好?更簡潔?
是的!
试试修改列的format,类似:gl_dt.Columns["price"].DataType = typeof(decimal);
好像更麻烦,针对上面问题,有什么好说法吗
GG,后面在优化吧