![]() |
1
2
我不这么认为。在这种情况下,linq-to对象可能只将两边作为常规的可枚举对象处理,并手动进行连接(而不查看
|
![]() |
2
3
在Reflector中深入研究似乎并没有给出Linq使用DataRelations的任何迹象,但这段代码非常难以阅读。所以我写了一个小的性能测试,除非我错过了一些愚蠢的测试,否则结果是非常确定的:不,Linq不使用DataRelations和getChildRows()来投影加入的行。如果要在子行上迭代,则必须构造LINQ查询以显式调用getchildrows()。而且,这两种方法的性能都不如编写代码来遍历getchildrows()返回的数组。 有点不幸,因为大型数据集上的性能差异非常显著,以至于用显式实现的代码替换Linq通常是值得的,而对于Linq,这通常是不正确的。 我的测试代码如下。使用join的LINQ迭代的时间保持不变(在我的机器上大约580-590 ms),而不管数据关系是在它之前还是之后创建的。使用getchildrows()的linq迭代大约需要280毫秒, 直接在getchildrows()上的迭代需要不到一毫秒的时间。这对我来说是相当令人惊讶的——足够让我假设在第一次运行测试时代码中有一个bug。(这就是为什么我每次都要写出计数-以确保编译器没有将循环优化为不存在的循环。)
|
![]() |
3
1
这是一个解释: http://msdn.microsoft.com/en-us/library/bb386969.aspx 但在上面的示例中,您使用“join”语法向Linq介绍父子关系。如果可能的话,我建议您创建一个强类型的数据集,并且将为您处理所有关系和联接。 |
|
Robert King · Unity C#语法问题-转换位置 1 年前 |
![]() |
JBryanB · 如何从基本抽象类访问类属性 1 年前 |
|
law · 检查答案按钮的输入字符串格式不正确 2 年前 |
![]() |
i_sniff_ket · 在unity之外使用unity类 2 年前 |