|
C#: про LINQ и outer join | ☑ | ||
---|---|---|---|---|
0
Ненавижу 1С
гуру
10.07.20
✎
14:51
|
Я знаю тут сварщики универсальные. Есть и знающие .Net
Есть пара вопросов на подумать про LINQ: 1. какие ограничения не позволили в LINQ завезти left/full outer join? 2. почему не сделали произвольный предикат соединения коллекций, а не только эквивалентность ключей? |
|||
1
Garykom
гуру
10.07.20
✎
15:03
|
||||
2
Garykom
гуру
10.07.20
✎
15:04
|
||||
3
Ненавижу 1С
гуру
10.07.20
✎
15:14
|
(1) знаю, но как-то криво что-ли, а может дело привычки
(2) то есть произвольное условие с компаратором, ну тоже не айс, тем более как оно в IQueryable будет для Linq to SQL? в любом случае спасибо за прямые ссылки |
|||
4
Кирпич
10.07.20
✎
15:41
|
Щас придет
|
|||
5
Garykom
гуру
10.07.20
✎
15:51
|
В пятницу?
|
|||
6
Serginio1
11.07.20
✎
12:15
|
В первом же примере статьи http://catalog.mista.ru/public/402433/
Приведу несколько примеров левого соединения с условием неравенства. Суть запроса в левом соединении Номенкладуры и подчиненных единиц при условии, что Штрих-код начинается с «4» var qr = from Номенклатура in бд.Спр_Номенклатура from единицы in бд.Спр_Единицы.Where(единица => единица.ВладелецId == Номенклатура.ID && единица.ШтрихКод.CompareTo("4") > 0).DefaultIfEmpty() select new { Номенклатура.Наименование, Номенклатура.ПолнНаименование, единицы.ШтрихКод, ОКЕИ = единицы.ОКЕИ.Наименование }; Генерирует такой запрос SELECT [Limit1].[C1] AS [C1], [Limit1].[DESCR] AS [DESCR], [Limit1].[SP101] AS [SP101], [Limit1].[SP80] AS [SP80], [Limit1].[DESCR1] AS [DESCR1] FROM ( SELECT TOP (1000) [Extent1].[DESCR] AS [DESCR], [Extent1].[SP101] AS [SP101], [Extent2].[SP80] AS [SP80], [Extent3].[DESCR] AS [DESCR1], 1 AS [C1] FROM [dbo].[SC84] AS [Extent1] LEFT OUTER JOIN [dbo].[SC75] AS [Extent2] ON ([Extent2].[PARENTEXT] = [Extent1].[ID]) AND([Extent2].[SP80] > N'4') LEFT OUTER JOIN [dbo].[SC41] AS [Extent3] ON [Extent2].[SP79] = [Extent3].[ID] ) AS [Limit1] |
|||
7
Serginio1
11.07.20
✎
12:23
|
||||
8
Ненавижу 1С
гуру
11.07.20
✎
12:29
|
(7) это читал, опять же оно годится только для LINQ to Object
(6) а вот тут надо изучить, но сбивает столку другой синтаксис, отличный от SQL |
|||
9
Serginio1
11.07.20
✎
12:29
|
Для Linq2Db LeftJoin
https://linq2db.github.io/articles/sql/Join-Operators.html |
|||
10
Ненавижу 1С
гуру
11.07.20
✎
12:33
|
(9) вот! все таки кто-то сделал "Using "LeftJoin" function"
|
|||
11
Serginio1
11.07.20
✎
12:35
|
(8) Ну Linq не совсем SQL. Его проще читать и создавать чем чистый SQL.
Но плата конечно это универсальность. Но в EF можно и чистый SQL использовать или ХП (10) Но это как понимаю только для Linq2Db. |
Форум | Правила | Описание | Объявления | Секции | Поиск | Книга знаний | Вики-миста |