Форум программистов, компьютерный форум, киберфорум
LINQ
Войти
Регистрация
Восстановить пароль
Карта форума Темы раздела Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.90/29: Рейтинг темы: голосов - 29, средняя оценка - 4.90
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
1

Как записать Left Join (Right Join) при помощи Linq, используя fluent-синтаксис

16.12.2012, 02:46. Показов 5728. Ответов 3
Метки нет (Все метки)

Author24 — интернет-сервис помощи студентам
Как записать Left Join (Right Join) при помощи Linq используя fluent - синтаксис?

У меня есть подозрение что при помощи SelectMany, но как..

Приведите пожалуйста наглядный пример.
0
Programming
Эксперт
94731 / 64177 / 26122
Регистрация: 12.04.2006
Сообщений: 116,782
16.12.2012, 02:46
Ответы с готовыми решениями:

Как обойти усеченность конструкции Left Outer Join в LINQ
Столкнулся с проблемой в LINQ при построении левого внешнего соединения. Есть две таблицы. ...

Ошибка "Integrity constraint violation" при запросе INNER JOIN LEFT JOIN
это запрос на вывод категорий в каждой категории есть файлы и для каждой категории я хочу вывести...

Как написать корректный запрос, используя LEFT JOIN
Есть вот такой запрос: SELECT fio, index_disciplin, disciplin_name, plan FROM responsible,...

Запросы RIGHT JOIN и LEFT JOIN в чём различие?
Добрый день! Чем отличаются запросы RIGHT JOIN и LEFT JOIN, если они выдают один и тот же результат?

3
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
16.12.2012, 09:52 2
Первое, что приходит на ум - это сделать через GroupJoin:
C#
1
2
3
4
5
6
7
8
int[] x = { 1, 2, 3, 4, 5, 6, 7, 8, 9, 0 };
int[] y = { 20, 30, 40, 50 };
 
var query = x.GroupJoin(y,
                        a => a,            // Значение из х
                        b => b / 10,       // Выборка тех чисел из у, которые при делении на 10 дают число из х.
                        (a, b) => b.DefaultIfEmpty(-1).Select(ab => new { X = a, Y = ab }))   // Вот тут мякотка в DefaultIfEmpty.
             .SelectMany(a => a);
Это LEFT JOIN. Чтобы сделать RIGHT - просто поменяйте местами массивы.

Возможно, кто-то предложит вариант по-элегантнее.
1
49 / 49 / 5
Регистрация: 11.07.2011
Сообщений: 282
16.12.2012, 16:59  [ТС] 3
Спасибо. А что будет если в массив y добавить число например 45 ?

А, все ,норм)

Добавлено через 21 минуту
Вот переписал для SelectMany:

C#
1
var res = x.SelectMany(n => y.Where(k => n == k/10).DefaultIfEmpty(-1).Select(ab => new {X = n, Y = ab}));
1
Эксперт .NET
17688 / 12873 / 3366
Регистрация: 17.09.2011
Сообщений: 21,138
16.12.2012, 17:55 4
Мне ваш вариант больше понравился - спасибо!
0
16.12.2012, 17:55
IT_Exp
Эксперт
87844 / 49110 / 22898
Регистрация: 17.06.2006
Сообщений: 92,604
16.12.2012, 17:55
Помогаю со студенческими работами здесь

Переделать запрос LEFT JOIN -> INNER JOIN
Доброго времени суток, помогите переделать запрос с использованием LEFT JOIN на INNER JOIN ...

Разобрать LINQ запрос для объединения двух таблиц по правилу LEFT JOIN
Здравствуйте, уважаемые! Задача такова: Загрузил через адаптер данных в DataSet две...

Конструкция left join join on on
Привет, что-то затруднился. Наткнулся на такой запрос в пакете: select * from table1 left join...

OR при left join
LEFT JOIN user u ON z.id_user = u.id Вощможно сделать выборку схождений из двух таблиц по двум...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
4
Ответ Создать тему
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2024, CyberForum.ru