当前位置:编程学习 > C#/ASP.NET >>

问一个DataSet中数据转换的效率问题

原数据


需要修改成的数据


我现在用foreach循环DataRow,可是效率好慢,实际数据大概有20列100行的样子,转换要7秒左右,怎么修改才能效率高呢? --------------------编程问答-------------------- 你从数据库取出来的时候不会用case when吗? --------------------编程问答-------------------- 如果是直接数据显示出来,可以在sql中用case when ,另一种方法就是在绑定到数据控件时,比如 GetResult(Eval("是否确认").tostring()) --------------------编程问答-------------------- 不用循环。你吧显示的数据绑定在数据控件上,显示的时候用三元运算符直接转换就行了。
<%# Eval("是否确认").ToString()=="true"?"已确认":"未确认" %>(假定这个字段为Bit类型) --------------------编程问答--------------------
引用 1 楼  的回复:
你从数据库取出来的时候不会用case when吗?

没有权限改那个获取数据的存储过程,再说那个状态代码可能会有增加,所以统一在一个枚举类里配置了
--------------------编程问答-------------------- 没必要,如果是datagridview,在cellformatting事件中处理

        private void dataGridView1_CellFormatting(object sender, DataGridViewCellFormattingEventArgs e)
        {
            if (e.Value.ToString() == "0")
                e.Value = "False";
            else if (e.Value.ToString() == "1")
                e.Value = "True";
        }

如果是gridview

  protected void GridView1_RowDataBound(object sender, GridViewRowEventArgs e)
  {
      if (e.Row.RowType == DataControlRowType.DataRow)
      {
          if (e.Row.Cells[0].Text == "0")
              e.Row.Cells[0].Text = "False";
          else if (e.Row.Cells[0].Text == "1")
              e.Row.Cells[0].Text = "True";
      }
  }
--------------------编程问答--------------------
引用 3 楼  的回复:
不用循环。你吧显示的数据绑定在数据控件上,显示的时候用三元运算符直接转换就行了。
<%# Eval("是否确认").ToString()=="true"?"已确认":"未确认" %>(假定这个字段为Bit类型)


如果是我的话我也会这样做,用三元运算符 --------------------编程问答--------------------
引用 3 楼  的回复:
不用循环。你吧显示的数据绑定在数据控件上,显示的时候用三元运算符直接转换就行了。
<%# Eval("是否确认").ToString()=="true"?"已确认":"未确认" %>(假定这个字段为Bit类型)

感觉不是在查询的时候处理,就在显示的时候处理。 --------------------编程问答-------------------- 假如,是否确认的字段名为IsConfrim,紧急程度为UrgencyDegree,是否缺货为Stockout
select orderNo,case IsConfrim when 1 then '已确认' else '未确认' end as IsConfrim,
case UrgencyDegree when 1 then '正常' when 2 then '紧急' when 3 then '非常紧急' end as UrgencyDegree, case Stockout when 0 then '不缺货' else '缺货' end as Stockout
 from Tabel  --------------------编程问答-------------------- 模板列 
.replace(0,"未确认").replace(1,"已确认") --------------------编程问答--------------------
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,