有个4个线程,2个修改DataTable里的行,另2个用查询table1.Select(queryFilterExpression, orderBy, DataViewRowState.OriginalRows);,结果会发现返回的DataRow数组里有的索引里的DataRow实例是null,请问,这如何解决呀?原因是什么?在修改的时候我用lock锁定这个DataTable了,所以在修改的时候不能查询。查询的时候是可以并发查询的,但不能修改。
非常纳闷啊,DataRow数组里怎么会有null的项呢,而且有时候一个精确的查询条件能查出几条数据,比如where id = 3这个条件,能把id = 2的行也查出来,前提我没有修改这些主键。十分诡异啊。
如果你的 lock 没问题的话,请把 DataViewRowState.OriginalRows 去掉。
这个Select没有2个参数重载呀。我想要排序的参数,就必须带着第三个参数。而且DataViewRowState.OriginalRows是为了防止读到脏数据才加的。这可咋么办呢
@Launcher: 3Q.....^^
比如where id = 3这个条件,能把id = 2的行也查出来,前提我没有修改这些主键。十分诡异啊。
--你说的情况是不可能发生的,肯定是别的原因
我也不相信这是真的,的确遇到了。我的世界观都扭曲了。
把具体参数带上,贴出代码来看下