【发布时间】:2012-08-24 19:09:36
【问题描述】:
我有以下方法对绑定源索引列表进行排序并将其对应的对象放入数组中。我也尝试过使用Array.Sort(),但都不起作用,foreach 循环中的代码永远不会被调用。我测试了变量int[] indices既不为空也不为空。
internal void Foo(int[] indices)
{
var bar = new Object[indices.length];
int i = 0;
foreach (int index in indices.OrderBy(x => x))
{
// this block never gets called
bar[i] = BindingSource[index];
i++;
}
}
【问题讨论】:
-
你可以把它变成一个 LINQ “oneliner”:
var bar = (from i in indices order by i select BindingSource[i]).ToArray()- 也许这会清除错误。 (也就是说,我猜原因是indices是空的,只是可能不在您调试的调用中。) -
你如何验证它永远不会被调用?在调试器中?
-
使用您的代码,只要索引包含至少一个元素,我就可以在
foreach中进行跟踪。如果问题仍然存在,则说明问题中没有包含某些内容。