gpt4 book ai didi

c# - List<> 在 ToArray() 期间丢失的项目?

转载 作者:太空宇宙 更新时间:2023-11-03 16:44:56 25 4
gpt4 key购买 nike

不久前,我编写了一个用于收集公共(public)交通中断情况的系统。有关任何事件的信息都收集在 MSSQL 数据库中。消费者通过调用 .asmx 网络服务访问这些数据。使用 ADO.NET 从数据库中收集数据,然后每个数据行填充一个偏差对象并添加到一个列表中。在服务层,列表应用 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;
}

证明你所期望的通常是有返回的:-)

关于c# - List<> 在 ToArray() 期间丢失的项目?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6344946/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com