#vb.net #linq #join #database-table
#vb.net #linq #Присоединиться #база данных-таблица
Вопрос:
В конечном счете, мне нужна была универсальная функция, которая принимала бы два datatable и и 2 tablekeys и возвращала объединенный datatable. Итак, вот мой первый шаг к ее решению.
Как я могу написать пример Linq следующего примера T-SQL в VB?
SELECT * FROM
Table1
LEFT OUTER JOIN
Table2
ON Table1.key = Table2.key
Ответ №1:
Это было бы что-то вроде этого:
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. Спасибо за ответ. Здесь я немного запутался. что такое Prop1 и Prop2? являются ли они столбцами? Проблема, с которой я сталкиваюсь, заключается в том, что я не могу выбрать столбцы, поскольку я пытаюсь написать универсальную функцию.
2.
Prop1
иProp2
были просто примерами столбцов в ваших таблицах. Читая ваш вопрос еще раз, я вижу, что вам нужна универсальная функция. Я постараюсь что-нибудь придумать.
Ответ №2:
Вы можете просто использовать существующий метод соединения
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 #
Комментарии:
1. кстати, это не левое внешнее соединение