来来来,散分散分,来个下面最优处理方式!

2020-09-29 14:22发布

问题:

遍历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();
                    }
                }
            }

回答1:

如果是效率,没什么“更好”吧?如果是优雅的方式,那应该有?



回答2:

更好是什麼?效能更好?更簡潔?



回答3:

试试修改列的format,类似:gl_dt.Columns["price"].DataType = typeof(decimal);



回答4:

GG,后面在优化吧



标签: c#