日期:2014-05-19  浏览次数:20378 次

|M| 第二贴:200分求 DataTable 的操作
http://community.csdn.net/Expert/topic/5492/5492712.xml?temp=.5467951
我是用
DataView   dv   =   new   DataView(dt);
dv.Sort   =   "cloumn1   desc ";
for   (Int32   i   =   dv.Count   -   1;   i   > =   1;   i--)
{
      if   (dv[i].Row[1].ToString()   ==   dv[i   -   1].Row[1].ToString())
        {
                dv.Delete(i);
        }
}

虽然这样可以得到那些我要的行
但是dv.Table就不能得到原来的行
这里是因为dv.Delete(i);
已经把行删除了

所以我想问如何不用我上面的写法得到一个DataView而且不改变原来的
DataTable数据

PS:这里不要Copy   多出一个DataTable
要是这个DataTable里面操作实现我上面要的
我要取出
1                 A                 A                 1                   2                 6          
2                 B                 B                 2                   1                 3

谢谢

------解决方案--------------------
DataTable 里面加个 column, 比如说 "delete ", DataView的filter加上判断这个列的条件,
以下没试过,不知道可不可以, 主要是filter那里,
is null 忘记了可不可以, 不可以就找其他办法, 比如说默认值.. 实在不行加个循环初始值..

DataTable dt= GetStructAndData(); // 建立DataTable

dt.Columns.Add( "delete ", typeof(bool));

DataView dv = new DataView(dt);
dv.Sort = "cloumn1 desc ";
dv.Filter = "delete is null or delete = 0 "
for (Int32 i = dv.Count - 1; i > = 1; i--)
{
if (dv[i].Row[1].ToString() == dv[i - 1].Row[1].ToString())
{
dv[i][ "delete "] = false;
}
}


------解决方案--------------------
up
------解决方案--------------------
MARK
------解决方案--------------------
up
------解决方案--------------------
設計一個過渡二維數組來保存刪除前的DataTable,第一個字符串型一個布爾型,字符串型保存第一列字符,布爾型保存刪除標識。
------解决方案--------------------
我看一楼的方法行,多加个列,比如flag,如果是第一次出现就设置为true,如果不是则设置成False,如果要取你的数据,只需要找Flag是true的就OK了。
------解决方案--------------------
up