微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

c# – LINQ右连接和左连接

我的任务是将一些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);

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐