List <>项目在ToArray期间丢失?

问题描述

| 前一段时间,我编写了一个用于收集公共交通中断的系统的代码。有关任何事件的信息都收集在MSsql数据库中。消费者通过调用.asmx Web服务来访问这些数据。使用ADO.NET从数据库收集数据,然后每个数据行填充一个Deviation对象并添加到List。在服务层中,将对列表应用ToArray()调用并将其返回给使用者。 到目前为止,一切都很好。但是问题在于,在某些情况下(5%左右),我们已经知道该数组会以某种方式被缩减。而不是通常的15-20个项目,而是返回了一半甚至更少的项目。其余项目始终位于原始列表的末尾。而且,甚至更少的时间,在数组的开头重复/随机排列了几项。 在不同的层上进行了一些测试之后,缩减似乎发生在过程的最后,即在转换为数组或SOAP序列化期间。但是代码看起来很纯真,是吧?:
[WebMethod]
public Deviation[] GetDeviationsByTimeInterval(DateTime from,DateTime to)
{
    return DeviRoutines.GetDeviationsByTimeInterval(from,to).ToArray();
}
我不是100%肯定不会在sql或数据访问层中发生错误,但是事实证明他们在测试过程中发挥了作用。在这个问题上的任何帮助都会有很大帮助! :)     

解决方法

        我会做类似的事情:
public Deviation[] GetDeviationsByTimeInterval(DateTime from,DateTime to)
{
    var v1 = DeviRoutines.GetDeviationsByTimeInterval(from,to);
    LogMe( \"v1: \" + v1.Count );

    var v2 = v1.ToArray();
    LogMe( \"v2: \" + v2.Length );

    return v2;
}
证明您期望的结果通常会得到回报:-)     ,        http://msdn.microsoft.com/zh-CN/library/x303t819.aspx   类型:T []包含副本的数组   列表中的元素。 您没有在.NET中找到错误,这很可能是您的ѭ2中的错误     ,        我愿意打赌
ToArray
确实按照所告诉的去做,但是您的
from
to
值有时会是垃圾(验证错误?)或
GetDeviationsByTimeInterval
出于某种原因会误解它们。 将一些日志记录到
Deviation[]
GetDeviationsByTimeInterval
中,以查看传递给它的是什么值,下次它变成梨形时,您将能够诊断问题出在哪里。     

相关问答

Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其...
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。...
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbc...