+----+-------+----------+----------+
| id | keyid | 主组名称    | 副组名称  |
+----+-------+----------+----------+
| 24 | 0     | 默认        | 属于默认  |
| 24 | 0     | 默认        | 默认      |
| 16 | 1     | 上海        |           |
| 16 | 1     | 上海        |           |
| 16 | 1     | 上海        |           |
| 17 | 2     | 深圳        |           |
| 17 | 2     | 深圳        |           |
| 17 | 2     | 深圳        | 坂田      |
| 21 | 6     | 陕西        | 西安      |
+----+-------+----------+----------+ds.tables[0]里面的数据如上所示,
现在想要的效果是比如主组上海,副组里有三个空行,则保留一个空行;
主组深圳,副组两个空行,一个是坂田,这种情况则删除空行
要的效果是:
+----+-------+----------+----------+
| id | keyid | 主组名称    | 副组名称  |
+----+-------+----------+----------+
| 24 | 0     | 默认        | 属于默认  |
| 24 | 0     | 默认        | 默认      |
| 16 | 1     | 上海        |           |
| 17 | 2     | 深圳        | 坂田      |
| 21 | 6     | 陕西        | 西安      |
+----+-------+----------+----------+求达人指教,提供源码,谢谢。

解决方案 »

  1.   

    foreach(DataRow dr in ds.Tables[0].rows)
    {
         if(dr["副组名称"]==null || dr["副组名称"].ToString()==string.Empty)
              dr.Delete();
    }
      

  2.   

     List<DataRow> list = new List<DataRow>();         
                foreach (DataRow dr in dt.Rows)
                    list.Add(dr);  List<DataRow> list1 = list.Distinct(new Compare()).ToList();  public class Compare : IEqualityComparer<DataRow>
            {
                public bool Equals(DataRow dr1,DataRow dr2)
                {
                    if (dr1[0] == dr2[0] && dr1[1]== dr2[1])
                        return true;
                   
                    return false;
                }            public int GetHashCode(DataRow obj)
                {
                    return obj.ToString().GetHashCode();
                }        }
      

  3.   

    if (dr1[0].ToString() == dr2[0].ToString()
    否则会一直不相等。
    虽然没有完全解决问题,不过思路已经对了,结贴。