通过下面的代码我已经得到了数据明细:
 DataRow[] cwxm = xmmx.Select("项目类别='3'", "处方日期");
            foreach (DataRow cwxm_t in cwxm)
            {
                DataRow cwxm_mx = mxd.NewRow();
                cwxm_mx["时间"] = cwxm_t["处方日期"];
                cwxm_mx["药品或医疗"] = cwxm_t["医院收费项目名称"];
                cwxm_mx["规格"] = cwxm_t["规格"];
                cwxm_mx["单位"] = cwxm_t["单位"];
                cwxm_mx["数量"] = cwxm_t["数量"];
                cwxm_mx["单价"] = cwxm_t["单价"];
                cwxm_mx["金额"] = Math.Round(decimal.Parse(cwxm_t["数量"].ToString()) * decimal.Parse(cwxm_t["单价"].ToString()), 2);
                cwxm_mx["类型"] = cwxm_t["收费项目等级"];
 名称          数量   单价  金额
床位费           1       19   19
床位费           1       19   19
床位费(双人间) 1       20   20
床位费(双人间) 1       20   20
如何合并得到
 名称          数量      单价  金额
床位费           2       19   38
床位费(双人间) 2       20   40

解决方案 »

  1.   

    利用SQL group by   和 sum
      

  2.   

    还可以用linq取distinct结果集,然后遍历
      

  3.   

    DataRow[] cwxm = xmmx.Select("项目类别='3'", "处方日期");
    ==〉
    DataRow[] cwxm = xmmx.Select("项目类别='3'", "处方日期").Distinct();
      

  4.   

    var group= xmmx.Select("项目类别='3'", "处方日期").GroupBy(a=>a,new Cmp());
    foreach(var i in group)
    {
      int count= i.Count();  var row= i.Key;
    }public Cmp:IEqualityComparer<DataRow>
    {
        public bool Equals(DataRow x,DataRow y)
    {
      return x["项目类别"]==y["项目类别"]&& x["处方日期"]==y["处方日期"];
    }public int GetHashCode(DataRow obj)
    {
       return obj["项目类别"].GetHashCode()+obj["处方日期"].GetHashCode();
    }
    }
      

  5.   

     return x["项目类别"]==y["项目类别"]&& x["处方日期"]==y["处方日期"];
    ====>
     return x["项目类别"].ToString()==y["项目类别"].ToString()&& x["处方日期"].ToString()==y["处方日期"].ToString();
      

  6.   

    查询的时候直接过滤掉重复的就行
    select distinct 
      

  7.   

    可以个人推荐你 在数据库里做操作select distinct * from tablename
      

  8.   


    select sum('数量'),'单价',sum('金额') from cwxm_mx   group by '单价' 查询的时候行不
      

  9.   

    select distinct  *  from 表名
      

  10.   

    DataTable da = new DataTable();
    DataView myDataView = new DataView(da);
    da = myDataView.ToTable(true);
    dataGridView1.DataSource = da;把数据放在DataView myDataView = new DataView(“你索引到的数据”);
    删除重复的数据da = myDataView.ToTable(true);这样就可以了