我最終所需要的是泛型函數,它需要兩個數據表和兩個表鍵並返回連接的數據表。所以這是我解決問題的第一步。Linq左外連接
如何在VB中編寫以下T-SQL示例的Linq示例?
SELECT * FROM
Table1
LEFT OUTER JOIN
Table2
ON Table1.key = Table2.key
我最終所需要的是泛型函數,它需要兩個數據表和兩個表鍵並返回連接的數據表。所以這是我解決問題的第一步。Linq左外連接
如何在VB中編寫以下T-SQL示例的Linq示例?
SELECT * FROM
Table1
LEFT OUTER JOIN
Table2
ON Table1.key = Table2.key
這將是這樣的:
Dim JoinedResult = From t1 In Table1
Group Join t2 In Table2
On t1.key Equals t2.key
Into RightTableResults = Group
From t2 In RightTableResults.DefaultIfEmpty
Select t1.Prop1,
t2.Prop2
我不是一個VB的傢伙(再),但我認爲這是可行的。
您可以簡單地使用現有的加入方法
public static IEnumerable<TResult> Join<TOuter, TInner, TKey, TResult>(
this IEnumerable<TOuter> outer,
IEnumerable<TInner> inner,
Func<TOuter, TKey> outerKeySelector,
Func<TInner, TKey> innerKeySelector,
Func<TOuter, TInner, TResult> resultSelector
)
如:
table1.Join(table2, t1 => t1.Key, t2 => t2.Key, (t1, t2) => new { Table1 = t1, Table2 = t2 });
可以找到更多的重載和實例http://msdn.microsoft.com/en-us/library/system.linq.enumerable.join.aspx
原諒我的C#示例
這是不是離開外部連接順便說一句 – 2011-04-21 14:12:48
感謝回答。我在這裏有點困惑。 Prop1和Prop2是什麼?他們是專欄嗎?我遇到的問題是我無法選擇列,因爲我試圖編寫泛型函數。 – n3xus 2011-04-21 09:01:05
'Prop1'和'Prop2'只是您桌子上的示例列。再次讀你的問題我可以看到你想要一個通用函數。我會試着想一些事情。 – 2011-04-21 09:58:48