我想知道这两个linq语句之间有什么区别?
什么更快?
它们是一样的吗?
这个陈述有什么区别
from c in categories
from p in products
where c.cid == p.pid
select new { c.cname, p.pname };
Run Code Online (Sandbox Code Playgroud)
这句话?
from c in categories
join p in products on c.cid equals p.pid
select new { c.cname, p.pname };
Run Code Online (Sandbox Code Playgroud)
先谢谢你们.
编辑:在LINQ to Objects的上下文中
Jon*_*eet 15
好的,在LINQ to Objects中,差异可能非常大.
第一种形式检查每个 c和p对,检查c.cid等于p.pid和产生匹配.
第二种形式(内部Join)首先创建从pid匹配Product元素到基于散列的查找.然后它流式传输categories,然后检查Product查找中基于的查找匹配元素的每个类别c.cid.这通常更有效,因为它只需要查看products一次并创建基于散列的查找.另一方面,它具有更高的内存占用.当然,这一切都有些懒散 - 只有当你要求第一个结果发生任何重大事件时才会这样做.
有关操作的更多详细信息Join,请参阅有关该主题的Edulinq博客文章.