加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – LINQ右连接和左连接

发布时间:2020-12-16 02:04:07 所属栏目:百科 来源:网络整理
导读:我的任务是将一些t-sql查询重构为LINQ.简单连接和左外连接都很清楚.这是我的代码: string[] leftouter = new string[] { "a","b","c","d","e" };string[] inner = new string[] { "a","b" };var q = from s1 in leftouter join s2 in inner on s1 equals s2
我的任务是将一些t-sql查询重构为LINQ.简单连接和左外连接都很清楚.这是我的代码:

string[] leftouter = new string[] { "a","b","c","d","e" };
string[] inner     = new string[] { "a","b" };

var q = from s1 in leftouter
        join s2 in inner on s1 equals s2 into j
        from sj in j.DefaultIfEmpty() 
        select string.Format("Outer: {0} Left: {1}",s1,sj)

输出是:

Outer: a Left: a  
Outer: b Left: b  
Outer: c Left:   
Outer: d Left:   
Outer: e Left:

这是一个简单的左连接.现在我想添加一个新的数据集:

string[] rightouter = new string[] { "c","e" };

所需的输出是:

Outer: a Left: a Right:  
Outer: b Left: b Right:  
Outer: c Left:   Right: c
Outer: d Left:   Right: d
Outer: e Left:   Right: e

如何重新格式化LINQ以解决此输出?谢谢

解决方法

试试这个:

string[] all = {"a","e"};
string[] left = {"a","b"};
string[] right = {"c","e"};

var q = from innerItem in all
        join leftItem in left on innerItem equals leftItem into leftItems
        join rightItem in right on innerItem equals rightItem into rightItems
        from a in leftItems.DefaultIfEmpty()
        from b in rightItems.DefaultIfEmpty()
        select string.Format("Outer: {0} Left: {1} Right: {2}",innerItem,a,b);

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读