何时更喜欢用SelectMany()表示的连接超过Linq中用join关键字表示的连接
|
Linq允许使用join关键字或使用表达内部联接
var personsToState = from person in persons
join state in statesOfUS
on person.State equals state.USPS
select new { person,State = state.Name };
foreach (var item in personsToState)
{
System.Diagnostics.Debug.WriteLine(item);
}
// The same query can be expressed with the query operator SelectMany(),which is
// expressed as two from clauses and a single where clause connecting the sequences.
var personsToState2 = from person in persons
from state in statesOfUS
where person.State == state.USPS
select new { person,State = state.Name };
foreach (var item in personsToState2)
{
System.Diagnostics.Debug.WriteLine(item);
}
我的问题:何时使用join-style以及何时使用where-style是有目的的, 解决方法对于本地查询,由于其键控查找为 Athari mentioned,Join更有效,但是对于LINQ to SQL(L2S),您将获得更多来自SelectMany的里程数.在L2S中,SelectMany最终在生成的SQL中使用某种类型的SQL连接,具体取决于您的查询.看看问题11& 12#the LINQ Quiz by Joseph / Ben Albahari,C#4.0的作者.它们显示了不同类型连接的样本,并指出:
此外,Matt Warren在此主题上有一篇详细的博客文章,因为它与IQueryable / SQL有关:LINQ: Building an IQueryable provider – Part VII. 回到你要使用哪个问题,你应该使用更具可读性的查询,让你轻松表达自己并清楚地构建你的最终目标.除非您正在处理大型集合并且已经描述了这两种方法,否则性能不应该是最初的关注点.在L2S中,您必须考虑SelectMany为您提供的灵活性,具体取决于您配置数据所需的方式. (编辑:安卓应用网) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- 将列从Date转换为Datetime Sql Server
- sql-server – Microsoft SQL Server 2005/2008:XML与text
- mongodb禁止外网访问及添加账号的操作方法
- PowerDesigner16生成SQL2005列注释的方法
- 详解sqlserver查询表索引
- sql – 忽略Oracle DUP_VAL_ON_INDEX异常有多糟糕?
- sql-server – 什么工具从SQL Server分层数据生成图表?
- Linux上安装Mysql及简单的使用详解
- sql – IN子查询的WHERE条件影响主查询 – 这是一个功能还是
- sql-server-2008 – SQL2008. SSRS webservice的URL是什么?
