是否考虑 ID not in(xxx,xxxx,xxxx,xxx)的写法,出错的原因不太清楚,你的判断表达式太长了,导致堆栈溢出了~

解决方案 »

  1.   

    select里面的条件太多了,可以分步计算啊。再说了有那么多条件为什么不在数据库里筛选好了,而在本机内存中频繁的计算呢?
      

  2.   

    再分析分析你的情况看能不能用 (not) exists  ,你用 累加 <> 或者 in 很容易就溢出了,
      

  3.   

    建议你用not in 试一下StringBuilder sqlCondition=new StringBuilder();
    foreach (DictionaryEntry de in requestIDs)
    {   
       sqlCondition.Append(de.Value.ToString()+",");
    }
    if(sqlCondition.Length>0)
    {
    filterStr=" ID not in ("+sqlCondition.ToString().Substring(0,sqlCondition.Length-1)+") and  ID<>-1";
    }
    else
    {
    filterStr="ID<>-1";

    DataRow[] dtRows = dt.Select(filterStr);
      

  4.   


    建议你用not in 试一下StringBuilder sqlCondition=new StringBuilder();
    foreach (DictionaryEntry de in requestIDs)
    {   
       sqlCondition.Append(de.Value.ToString()+",");
    }
    if(sqlCondition.Length>0)
    {
    filterStr=" ID not in ("+sqlCondition.ToString().Substring(0,sqlCondition.Length-1)+") and  ID<>-1";
    }
    else
    {
    filterStr="ID<>-1";

    DataRow[] dtRows = dt.Select(filterStr);

    多谢以上各位 wpfLove, guwei4037, lasesiwen, reenjie的回复。   当时头脑发热没有想到 Not in, 这个应该是会很有帮助的。   谢谢各位, 下星期会公司去试试!!To lasesiwen, 设计是历史遗留问题, 暂时还大改不了。  多谢。
      

  5.   

    用not in 的时候也要小心一点,数据量少并且量你可以控制的话还是可以用的,但是数据量不固定,一旦特别多同样会溢出。这种情况下能用exists最好