首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >许多外部连接与SQL到LINQ

许多外部连接与SQL到LINQ
EN

Stack Overflow用户
提问于 2017-01-09 14:19:39
回答 1查看 71关注 0票数 0

很难尝试用多个外部联接将SQL查询重写到Linq。

这是一个查询:

代码语言:javascript
运行
复制
select on1.diskpath as d1,
on2.diskpath as d2,
of1.diskpath as d3,
of2.diskpath as d4,
on1.disknaam as n1,
on2.disknaam as n2,
of1.disknaam as n3,
of2.disknaam as n4
from tblstoragelocation
left join tblstoragedisks on1 on online1=on1.id
left join tblstoragedisks on2 on online2=on2.id
left join tblstoragedisks of1 on offline1=of1.id
left join tblstoragedisks of2 on offline2=of2.id where md5='xxx'";

我尝试了许多事情,这是其中之一,但它带来了许多错误:(loc已经声明,类型推断在groupjoin中失败,找不到online2 )

代码语言:javascript
运行
复制
from loc in fdc.tblStoragelocations
join _on1 in fdc.tblStoragedisks on loc.online1 equals _on1.id into on1
from _on2 in fdc.tblStoragedisks on loc.online2 equals _on2.id into on2

那么,如何将多个左外部联接写入LINQ?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2017-01-09 15:17:52

左外连接是通过.DefaultIfEmpty()方法实现的。

代码语言:javascript
运行
复制
var q = 
    from iter_1 in collection_1
    join iter_2 in collection_2 on iter_1 equals iter_2 into join_1 
    from iter_2 in join_1.DefaultIfEmpty()
    join iter_3 in collection_3 on iter_2 equals iter_3 into join_2
    from iter_3 in join_2.DefaultIfEmpty()
    ...
    join iter_n in collection_n on iter_n_1 equals iter_n into join_n_1
    from iter_n in join_n_1.DefaultIfEmpty()
    select join_n_1;
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/41550011

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档