[英]LINQ right join and left join
我的任務是將一些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", "d", "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", "b", "c", "d", "e"};
string[] left = {"a", "b"};
string[] right = {"c", "d", "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);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.