日期:2014-05-20 浏览次数:21207 次
while (has) { var data = (from p in db.数据表s where p.时间 > lastfinaltime && p.时间 < DateTime.Now //将新导入的记录导出来。 orderby p.时间 ascending select p).Skip(skipp).Take(2000); skipp += 2000; if (data.Count() == 2000) ..... if(......) has=false//数据处理结束
·Select - Select选择;延迟 ·Where - Where查询;延迟 ·OrderBy - 按指定表达式对集合正序排序;延迟 ·OrderByDescending - 按指定表达式对集合倒序排序;延迟 ·GroupBy - 分组;延迟 ·Join - Join查询;延迟 ·GroupJoin - 分组Join查询;延迟 ·Distinct - 过滤集合中的相同项;延迟 ·Union - 连接不同集合,自动过滤相同项;延迟 ·Concat - 连接不同集合,不会自动过滤相同项;延迟 ·Intersect - 获取不同集合的相同项(交集);延迟 ·Except - 从某集合中删除其与另一个集合中相同的项;延迟 ·Skip - 跳过集合的前n个元素;延迟 ·Take - 获取集合的前n个元素;延迟 ·SkipWhile - 直到某一条件成立就停止跳过;延迟 ·TakeWhile - 直到某一条件成立就停止获取;延迟 ·Single - 根据表达式返回集合中的某一元素;不延迟 ·SingleOrDefault - 根据表达式返回集合中的某一元素(如果没有则返回默认值);不延迟 ·Reverse - 对集合反向排序;延迟 ·SelectMany - Select选择(一对多);延迟 ·First - 返回集合中的第一个元素;不延迟 ·FirstOrDefault - 返回集合中的第一个元素(如果没有则返回默认值);不延迟 ·Last - 返回集合中的最后一个元素;不延迟 ·LastOrDefault - 返回集合中的最后一个元素(如果没有则返回默认值) ·ElementAt - 返回集合中指定索引的元素;不延迟 ·ElementAtOrDefault - 返回集合中指定索引的元素(如果没有则返回默认值);不延迟 ·Contains - 判断集合中是否包含有某一元素;不延迟 ·Any - 判断集合中是否有元素满足某一条件;不延迟 ·All - 判断集合中是否所有元素都满足某一条件;不延迟 ·Count - 返回集合中的元素个数,返回int;不延迟 ·LongCount - 返回集合中的元素个数,返回long;不延迟 ·Sum - 集合应为数字类型集合,求其和;不延迟 ·Min - 返回集合的最小值;不延迟 ·Max - 返回集合的最大值;不延迟 ·Average - 集合应为数字类型集合,求其平均值;不延迟 ·Aggregate - 根据输入的表达式获取一个聚合值;不延迟 ·Cast - 将集合转换为强类型集合;延迟 ·DefaultIfEmpty - 查询结果为空则返回默认值;延迟 ·SequenceEqual - 判断两个集合是否相同;不延迟 ·OfType - 过滤集合中的指定类型;延迟 ·ToArray - 将集合转换为数组;不延迟 ·ToList - 将集合转换为List<T>集合;不延迟 ·ToDictionary - 将集合转换为<K, V>集合;不延迟
------解决方案--------------------
你用Sql Profile 录一下你这个Linq所产生的T-SQL语句再来看看会不会造成内存不足
用VS2008以上的版本执行LoadTest,进行负载测试看看,会不会有内存不足的问题.
"能将每次取的数据所占的内存释放掉啊"
至于这个问题,在第一楼说了:"如果没用到非托管,也没有申明"全局"变量,不用过于担心,只要你一次不是取太多的资料,造成内存溢出.不需要去担心程式运行中内存不断增加的问题.过段时间GC会自动回收不使用的部分的."
不知道楼主还在纠结个肾?
这个话题你发了好像不下3个帖子了.