首页 新闻 会员 周边 捐助

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

0
悬赏园豆:100 [已解决问题] 解决于 2020-09-29 14:35

遍历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();
                    }
                }
            }
c#
何以解忧唯有撸码的主页 何以解忧唯有撸码 | 初学一级 | 园豆:37
提问于:2020-03-25 11:51
< >
分享
最佳答案
1

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

收获园豆:100
顾晓北 | 专家六级 |园豆:10898 | 2020-03-26 18:00

更好看,更简洁也行

何以解忧唯有撸码 | 园豆:37 (初学一级) | 2020-03-30 19:55

@[Stephen-kzx]: 第一个循环看看有没有类似:

listColumns = item.Columns.Where(c => c. ColumnName.StartWith("D") || c.ColumnName.StartWith("d")).Select(c => c.ColumnName);
只是这样的话,listColumns可以是List<Column>;

顾晓北 | 园豆:10898 (专家六级) | 2020-04-02 10:43
其他回答(3)
0

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

RosonJ | 园豆:4910 (老鸟四级) | 2020-03-25 15:54

是的!

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:37 (初学一级) | 2020-03-25 17:53
0

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

数据酷软件 | 园豆:130 (初学一级) | 2020-03-27 10:00

好像更麻烦,针对上面问题,有什么好说法吗

支持(0) 反对(0) 何以解忧唯有撸码 | 园豆:37 (初学一级) | 2020-03-30 19:56
0

GG,后面在优化吧

何以解忧唯有撸码 | 园豆:37 (初学一级) | 2020-04-09 10:18
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册