Linq离开了外连接

时间:2011-04-21 07:04:19

标签: vb.net linq join database-table

我最终需要的是泛型函数,它将需要两个数据表和2个tablekeys并返回Joined datatable。所以这是我解决问题的第一步。

如何在VB中编写以下T-SQL示例的Linq示例?

SELECT * FROM
Table1
LEFT OUTER JOIN
Table2
ON Table1.key = Table2.key

2 个答案:

答案 0 :(得分:3)

这将是这样的:

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人了,但我认为这样可行。

答案 1 :(得分:0)

您可以简单地使用现有的Join方法

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#例子