|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