|
|
1
0
它们不会被复制。您要求从数据源获取两个不同的值。
正在引起
和
正在引起
至于内部联接,获得它们的原因是因为这些表之间的关系。例如,Person是1..1和PersonPhoneNumber(或1..*)。在这两种情况下,我假设PersonPhoneNumber上的PersonID是fk和pk值。因此,在这种情况下,数据源必须转到该外部表,以查看PersonPhoneNumber导航属性的值是否实际存在。它通过在该表上执行内部联接来实现这一点。 |
|
|
2
0
我的直觉是.distinct().count()由linq-to-sql翻译单独处理。 我敢打赌,SQL上的执行计划只是把dupe抛出了。 |
|
|
3
0
尝试用显式条件重写而不是抽象的“谓词”构造。从我在SQL中看到的情况来看,对于一个单独的解析器来说,这种组合可能看起来很奇怪,并且有一个join[t5],您刚才称之为dupe:-)可以满足这个条件。 另外,试着告诉我们您真正想用这个查询找到什么,并试着编写正常的SQL来满足您的需要。我本该是人的——)我也觉得很奇怪——) 从技术上讲,通过在两个单独的查询中使用条件on(每个var赋值在技术上都是单独的查询)来强制双重联接。 同样,在不进行任何聚合的情况下按列分组并不总是等同于选择distinct。尤其是,允许联接上的select distinct优先于联接-查询是取消排序的(可以进行重新排序),并且您试图强制它是过程性的。所以Linq给了您确切的过程:-)然后SQL根据SQL规则重新排序:-) 所以,只需先编写普通的SQL,如果您不能对其进行Linq化,就可以将其放入存储过程中,这样可以使它更快地执行:—) |
|
|
Rm558 · 是否可以更改XML类型上的LINQPad代码生成? 8 年前 |
|
|
MJK · 规范模式-使用ICollection实现表达式 8 年前 |
|
|
Roland Ebner · 为实体框架多对多关系构建表达式树? 8 年前 |