【发布时间】:2015-02-13 10:16:02
【问题描述】:
我在调试时遇到了一件奇怪的事情,min 和 min2 返回不同的值,有什么原因吗?
[TestMethod]
public void TestGroupingOfTimesAndDistances()
{
// arrange
...
var routes = network.GetNetworkRoutes(startPoint, endPoints); // this yields one at a time
// act
routes.ToBandings();
}
public static bool ToBandings(this IEnumerable<INetworkRoute> enumerable)
{
var min = enumerable.Min(nr => nr.Value.Distance);
var min2 = enumerable.Min(nr => nr.Value.Distance);
return true;
}
如果这很重要,我将从 MS Test Runner 运行此代码。框架 4.5,使用 VS 2013。
【问题讨论】:
-
你能提供完整的代码来重现这个吗?
-
“来自数据库”并没有真正告诉我们太多。它是否已经被提取到
List<T>或类似的东西中?请给我们更多的背景。 一般而言您不能假设IEnumerable<T>每次迭代都会给您相同的结果,尽管对于许多实现来说都是如此。 -
我要看的是,这两个调用是否都会产生一个数据库查询,如果是,那么查询是什么以及它会产生什么结果。
-
@Muhammad:嗯,在某些情况下,您可以期望答案是相同的 - 但这实际上取决于数据源。
标签: c# linq extension-methods ienumerable min