当前位置:编程学习 > C#/ASP.NET >>

DataSet如何处理海量数据

求高手解答:
假设已经从数据库获取了10万行记录,存入一个DataSet对象中,DataSet.Tables[0]有A,B,C三列,
请用性能较好的方式实现如下要求:
(1)查找A=1并且B=2的记录
(2)统计C=3的记录数 --------------------编程问答-------------------- var q1 = DataSet.Tables[0].Rows.Cast<DataRow>().Where(x => x["A"].ToString() == "1" && x["B"].ToString() == "2");
var q2 = DataSet.Tables[0].Rows.Cast<DataRow>().Where(x => x["C"].ToString() == "3").Count(); --------------------编程问答-------------------- 查找记录:DataRow[] rows=DataSet.Tables[0].Select("A=1 and B=2");
统计记录数:int recordCount=DataSet.Tables[0].Select("C=3").Length; --------------------编程问答-------------------- DataView dv = new DataView (DataSet.Tables[0]);
找记录 dv.RowFilter="A=1 and B=2";
统计数 dv.RowFilter="C=3"; int count=dv.Count;
--------------------编程问答--------------------
引用 1 楼  的回复:
var q1 = DataSet.Tables[0].Rows.Cast<DataRow>().Where(x => x["A"].ToString() == "1" && x["B"].ToString() == "2");
var q2 = DataSet.Tables[0].Rows.Cast<DataRow>().Where(x => x["C"].ToString() ……



为什么要一次性取10w条数据,干嘛不是用分页。

推荐LZ使用分页+1楼的方法进行过滤,效率会高很多。 --------------------编程问答-------------------- 应该先在数据库查询结果再返回,

楼上的方法也可行, --------------------编程问答-------------------- 直接在数据库里查询再返回。
DataSet是.net里面最笨重的数据结构,百无一用。 --------------------编程问答--------------------
引用 6 楼  的回复:
直接在数据库里查询再返回。
DataSet是.net里面最笨重的数据结构,百无一用。

如果楼主考虑的是大数据量下的性能,就不要用Dataset,DataTable,尤其不要用LINQ,可以考虑5,6楼的方法,或者用dictionary、Hashtable等,不过10万真得不能算大数据量,你可能根本看不出性能区别 --------------------编程问答-------------------- 要效率用存储过程把... --------------------编程问答-------------------- 对于统计记录数,这样可能效率高些:int recordCount=(int)DataSet.Tables[0].Compute("count(C)", "C=3"); --------------------编程问答-------------------- 我指的是楼主限定的DataSet方式,2楼写的统计记录数效率估计不高。
补充:.NET技术 ,  ASP.NET
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,