关于datatable的问题 我想对于datatable做个操作 让datatable的记录数保持在50, 比如dt[1]如果以**开头的去掉具体业务比这个复杂 个人觉得不是Sql 能搞定的 我用dr.delete 怎么dt.Rows.count值一直不变 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 刷新,刷新后dt.Rows.count值就变了 写个循环,吧table的数据读一遍符合要求的放入新的table,放入50个结束,返回新的table什么逻辑啊sql不能搞定 比如一个简单 有个字段 name 数据库一共有500条数据 客户只想要30条数据 到页面上假设name有3种情况 1包含 *2包括#3都不包括返回结果 希望永远是30条记录 如果第三种情况满足了30条记录 那么1,2不要啦 只要3 ,排在前面的前30条如果3 没有30条记录 比如20条 那么取1中的10条 如果不够取2的剩余的 , 够了取前面的 如果你是只要50条记录的话,你可以考虑用DataView来做DataView dv=dt.DefaultView();dv.filter="" 如果你看了上面的逻辑 就会发现 没那么容易filter啊 我就想问根本问题 啥时候rows.count会改变 。我搞个新的 add一个row也没有发现rows.count改变啊 试试使用下面的方法吧 public static DataTable CreateTable(DataView obDataView) { if (null == obDataView) { throw new ArgumentNullException ("DataView", "Invalid DataView object specified"); } DataTable obNewDt = obDataView.Table.Clone(); int idx = 0; string [] strColNames = new string[obNewDt.Columns.Count]; foreach (DataColumn col in obNewDt.Columns) { strColNames[idx++] = col.ColumnName; } IEnumerator viewEnumerator = obDataView.GetEnumerator(); while (viewEnumerator.MoveNext()) { DataRowView drv = (DataRowView)viewEnumerator.Current; DataRow dr = obNewDt.NewRow(); try { foreach (string strName in strColNames) { dr[strName] = drv[strName]; } } catch (Exception ex) { Trace.WriteLine(ex.Message); } obNewDt.Rows.Add(dr); } return obNewDt; } 为啥 非要sql处理呢 我觉得sql处理太麻烦 至少发3条sql,实际中查询数据都很大的 几百万上千w的数据那也慢啊 还不如发一条sql 然后处理datatable 我已通过内存中filter和importRow搞定啦 :) .NET程序优化小记(欢迎拍砖) 如何通过xslt获取xml标签内的文本(除子标签) 关于往Session中存放对象的问题 求正则表达式高手!80分全给! 高人进来 如何做定时程序,关于短信! 高分 在线等 如何利用dataset 返回一个int值 如何使跳出窗口在选择好内容(跳出窗口的内容)后才能点击其它连接? 远程服务器返回错误: (400) 错误的请求。 挺简单的程序运行错,请指点! !!!!!!!!!在asp.net中如何把.swf格式的flash图片作为背景图片 flash与asp.net通信问题
符合要求的放入新的table,放入50个结束,返回新的table什么逻辑啊sql不能搞定
客户只想要30条数据 到页面上
假设name有3种情况
1包含 *
2包括#
3都不包括返回结果 希望永远是30条记录 如果第三种情况满足了30条记录 那么1,2不要啦 只要3 ,排在前面的前30条
如果3 没有30条记录 比如20条 那么取1中的10条 如果不够取2的剩余的 , 够了取前面的
DataView dv=dt.DefaultView();
dv.filter=""
我就想问根本问题 啥时候rows.count会改变 。我搞个新的 add一个row也没有发现rows.count改变啊
public static DataTable CreateTable(DataView obDataView)
{
if (null == obDataView)
{
throw new ArgumentNullException
("DataView", "Invalid DataView object specified");
}
DataTable obNewDt = obDataView.Table.Clone();
int idx = 0;
string [] strColNames = new string[obNewDt.Columns.Count];
foreach (DataColumn col in obNewDt.Columns)
{
strColNames[idx++] = col.ColumnName;
}
IEnumerator viewEnumerator = obDataView.GetEnumerator();
while (viewEnumerator.MoveNext())
{
DataRowView drv = (DataRowView)viewEnumerator.Current;
DataRow dr = obNewDt.NewRow();
try
{
foreach (string strName in strColNames)
{
dr[strName] = drv[strName];
}
}
catch (Exception ex)
{
Trace.WriteLine(ex.Message);
}
obNewDt.Rows.Add(dr);
}
return obNewDt;
}
那也慢啊 还不如发一条sql 然后处理datatable