不要说什么Linq等等之类的东东, 我是在SharePoint平台的项目, 都是用DataTable存放数据的! 多分感谢。。。。。 跪求大神了!!
--------------------编程问答--------------------
杀花
--------------------编程问答--------------------
是否考虑 ID not in(xxx,xxxx,xxxx,xxx)的写法,出错的原因不太清楚,你的判断表达式太长了,导致堆栈溢出了~
--------------------编程问答--------------------
select里面的条件太多了,可以分步计算啊。再说了有那么多条件为什么不在数据库里筛选好了,而在本机内存中频繁的计算呢?
--------------------编程问答--------------------
再分析分析你的情况看能不能用 (not) exists ,你用 累加 <> 或者 in 很容易就溢出了,
--------------------编程问答--------------------
也许你的设计当初就有问题,看看能不能改吧,一下子出来这么多ID要判断,这种想法不容易实现,改设计吧
--------------------编程问答--------------------
建议你用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, 设计是历史遗留问题, 暂时还大改不了。 多谢。
--------------------编程问答--------------------
用not in 的时候也要小心一点,数据量少并且量你可以控制的话还是可以用的,但是数据量不固定,一旦特别多同样会溢出。这种情况下能用exists最好