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条,因为过滤后的数据不等,不想拖到年后解决了,望各位大虾指点一下。
我还是觉得不够的时候再取一次(每次可以取比需要的稍多一点)比较好,有时候如果计算条件比较复杂,在SQL里面不好写就得写成存储过程了, 随便说一下,你可以把不需要的Remove掉而不用创建一个新的List再加进去,通过SkipWhile传一个匿名方法进去来实现. 如果不满足条件的记录出现比例较大或者符合条件的很少还是做到数据库里面好.
猜测一下
你希望过滤后获得20条数据吧???
那么只能把过滤再往前放一个层次了. 在这里现有的方法体内看起来是没办法了, 毕竟在这里没办法预先判断数据重复程度.
这样的判断一般是会放到SQL那个位置去执行吧.
推荐在数据SQL语句来处理,
要是一定要在程序里处理的话,可以把
Code
以上代码写入单独的方法.
当newClairs.count<20条时
就再执行这个方法,其实就是当newClairs 内容少于20条时,再到数据表中取数据并且进行判断.
建议在数据库中写sql语句吧。