首页 新闻 赞助 找找看

数据过滤的问题?

0
悬赏园豆:10 [已解决问题] 解决于 2009-01-14 22:55

 IClairvoyanceBLL clairvoyanceBLL = DataBLLAccess.createClairvoyanceBLL();
         List<Clairvoyance> newClairs = new List<Clairvoyance>();
         List<Clairvoyance> clairs = clairvoyanceBLL.getAllClairvoyanceByPage(1, 21);//第1页取21条数据
                if (clairs == null)
                {
                    context.Response.Write("0");
                }
                else
                {
                    for (int i = 0; i < clairs.Count(); i++)
                    {
                        if (newClairs.Count == 0)
                        {
                            newClairs.Add(clairs[i]);
                        }
                        else
                        {
                            if (clairs[i].InfoID == newClairs[newClairs.Count - 1].InfoID && clairs[i].InfoTypeID == newClairs[newClairs.Count - 1].InfoTypeID)
                            {
                                continue;
                            }
                            else
                            {
                                newClairs.Add(clairs[i]);
                            }
                        }

                    }

//现在想要改变为输出newClairs.Count为20条,方法如何改变,或者还有别的什么方法可以实现?最终输出为20条,因为过滤后的数据不等,不想拖到年后解决了,望各位大虾指点一下。

问题补充: /// <summary> /// 按页取得千里眼信息 /// </summary> /// <param name="startNO">从第几条开始取</param> /// <param name="countNO">一共取几条</param> /// <returns>取得的千里眼信息集合</returns> public List<Clairvoyance> getAllClairvoyanceByPage(int startNO, int countNO) { int skipCount = (startNO - 1) * countNO; try { var results = (from clairvoyance in clairvoyances orderby clairvoyance.ID descending select clairvoyance).Skip(skipCount).Take(countNO); if (results != null && results.Count() > 0) { return results.ToList(); } else return null; } catch (Exception e) { Console.WriteLine("" + e.Message); return null; } } 难道我必须在DAL层来过滤吗,在这怎么过滤呀?
孤星赏月的主页 孤星赏月 | 初学一级 | 园豆:125
提问于:2009-01-12 00:34
< >
分享
最佳答案
0

我还是觉得不够的时候再取一次(每次可以取比需要的稍多一点)比较好,有时候如果计算条件比较复杂,在SQL里面不好写就得写成存储过程了, 随便说一下,你可以把不需要的Remove掉而不用创建一个新的List再加进去,通过SkipWhile传一个匿名方法进去来实现.  如果不满足条件的记录出现比例较大或者符合条件的很少还是做到数据库里面好.

沙加 | 老鸟四级 |园豆:3680 | 2009-01-12 19:54
其他回答(3)
0

猜测一下

你希望过滤后获得20条数据吧???

那么只能把过滤再往前放一个层次了. 在这里现有的方法体内看起来是没办法了,  毕竟在这里没办法预先判断数据重复程度.

这样的判断一般是会放到SQL那个位置去执行吧.

Astral.Road | 园豆:345 (菜鸟二级) | 2009-01-12 07:22
0

推荐在数据SQL语句来处理,
要是一定要在程序里处理的话,可以把

Code

以上代码写入单独的方法.
当newClairs.count<20条时
就再执行这个方法,其实就是当newClairs 内容少于20条时,再到数据表中取数据并且进行判断.

程序员老李 | 园豆:790 (小虾三级) | 2009-01-12 08:30
0

建议在数据库中写sql语句吧。

玉开 | 园豆:8822 (大侠五级) | 2009-01-12 09:05
清除回答草稿
   您需要登录以后才能回答,未注册用户请先注册