Форум программистов, компьютерный форум, киберфорум
C#: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.71/21: Рейтинг темы: голосов - 21, средняя оценка - 4.71
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325

EF LINQ join с листом

23.11.2018, 13:51. Показов 4188. Ответов 13
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Добрый день

Похоже join с листом типизированным ссылочным типом невозможен...?

Ругается

C#
1
2
3
4
5
6
7
8
9
10
11
List<T_TypesProduct> TypesProducts = (from type in db.T_TypesProduct
                                                            where type < 3
                                                            select type ).ToList();
 
 var products =     (from product in db.T_Products
                           join typeProduct in TypesProducts on product .TypeID equals typeProduct .ID
                           select new DTOProduct
{
                                                                ID= product.ID,
                                                                Name= product.Name,
}).ToList();
System.NotSupportedException: 'Не удалось создать константу с типом "SITEAPI.Models.T_TypesProduct". В этом контексте поддерживаются только типы-примитивы и типы перечисления.'
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
23.11.2018, 13:51
Ответы с готовыми решениями:

Join в Linq по двум полям. OR
Есть два списка: List&lt;dynamic&gt; list1 = new List&lt;dynamic&gt;(); list1.Add(new { A = 1, B = 2 }); ...

Как записать Left Join (Right Join) при помощи Linq, используя fluent-синтаксис
Как записать Left Join (Right Join) при помощи Linq используя fluent - синтаксис? У меня есть подозрение что при помощи SelectMany,...

JOIN LINQ трех таблиц
Приветствую всех. Мне надо соединить три разных таблицы из разных БД(поэтому хочу использовать LINQ). Вот столкнулся с тем, что в книгах...

13
Эксперт .NET
 Аватар для Usaga
14147 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,323
23.11.2018, 13:51
UseMuse, возможен. Только конструктор должен быть без параметров. Используйте инициализацию свойств:

C#
1
2
3
4
5
6
7
 var products =     (from product in db.T_Products
                           join typeProduct in TypesProducts on product .TypeID equals typeProduct .ID
                           select new DTOProduct{
 A = product.A,
 B = product.B,
 ... и так далее
}).ToList();
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
23.11.2018, 13:52  [ТС]
Usaga, не много редактировал начало
0
Эксперт .NET
 Аватар для Usaga
14147 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,323
23.11.2018, 13:54
UseMuse, присмотритесь внимательнее:

C#
1
2
3
List<T_TypesProduct> TypesProducts = (from type in db.T_TypesProduct
                                                            where type < 3
                                                            select type ).ToList();
Тут видно в чём ошибка.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
23.11.2018, 13:56  [ТС]
Usaga, это опечатка

C#
1
2
3
List<T_TypesProduct> TypesProducts = (from type in db.T_TypesProduct
                                                            where type.ID < 3
                                                            select type ).ToList();
0
Эксперт .NET
 Аватар для Usaga
14147 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,323
23.11.2018, 13:56
Исправьте и будет вам счастье.
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
23.11.2018, 13:57  [ТС]
Usaga, ошибки это не исправляет, в коде у меня этой опечатки не было
0
Эксперт .NET
 Аватар для Usaga
14147 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,323
23.11.2018, 13:58
UseMuse, мы по коду от фонаря написанного должны определить какие ошибки были в оригинале? Вы можете выложить оригинальный код?
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
23.11.2018, 13:59  [ТС]
Usaga,
Если быть точным, то в коде у меня по другому не много))

C#
1
2
3
4
5
6
7
8
9
10
11
int FindID = 3;
List<T_TypesProduct> TypesProducts = (from type in db.T_TypesProduct
                                                           where type .ID.Equals(FindID)
                                                            select type ).ToList();
var products =     (from product in db.T_Products
                           join typeProduct in TypesProducts on product .TypeID equals typeProduct .ID
                           select new DTOProduct
{
                                                                ID= product.ID,
                                                                Name= product.Name,
}).ToList();
0
Эксперт .NET
 Аватар для Usaga
14147 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,323
23.11.2018, 14:00
UseMuse, это окончательный вариант или будет ещё 100500 дополнений?
0
785 / 616 / 273
Регистрация: 04.08.2015
Сообщений: 1,713
23.11.2018, 14:18
C#
1
2
3
4
5
6
7
8
9
int FindID = 3;
var products =     (from product in db.T_Products
                           join typeProduct in db.T_TypesProduct on product.TypeID equals typeProduct.ID
                           where typeProduct.ID==FindID
                           select new DTOProduct
{
                                                                ID= product.ID,
                                                                Name= product.Name,
}).ToList();
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
23.11.2018, 15:25  [ТС]
Usaga, окончательный

Добавлено через 5 минут
Igr_ok,
Таких запросов 20 штук, я хочу закешировать в список и делать соединение со списком уже. Чтобы 20 раз не делать запросов в БД по таблице db.T_TypesProduct
Цитата Сообщение от Igr_ok Посмотреть сообщение
C#
1
2
join typeProduct in db.T_TypesProduct on product.TypeID equals typeProduct.ID
* * * * * * * * * * * * * *where typeProduct.ID==FindID
Добавлено через 13 минут
Usaga, Igr_ok,


C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
int FindID = 3;
 
 
//так не работает
List<T_TypesProduct> TypesProducts = (from type in db.T_TypesProduct
                                                           where type .ID.Equals(FindID)
                                                            select type ).ToList();
/*
ошибка
System.NotSupportedException: 'Не удалось создать константу с типом "SITEAPI.Models.T_TypesProduct". В этом контексте поддерживаются только типы-примитивы и типы перечисления.'
*/
 
/*так работает
var TypesProducts = from type in db.T_TypesProduct
                                                           where type .ID.Equals(FindID)
                                                            select type;
*/
 
var products =     (from product in db.T_Products
                           join typeProduct in TypesProducts on product .TypeID equals typeProduct .ID
                           select new DTOProduct
{
                                                                ID= product.ID,
                                                                Name= product.Name,
}).ToList();
Добавлено через 40 секунд

Добавлено через 10 минут
Обращение к нескалярным переменным не поддерживается
Как это понять и как бы это обойти ...
0
Эксперт .NET
 Аватар для Usaga
14147 / 9375 / 1351
Регистрация: 21.01.2016
Сообщений: 35,323
23.11.2018, 18:21
Чё-то я не понял происходящего... Вы пытаетесь материализованную коллекцию сджойнить в выборке в базе?..
0
 Аватар для UseMuse
154 / 154 / 60
Регистрация: 11.01.2016
Сообщений: 1,325
26.11.2018, 09:31  [ТС]
Usaga, да
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
26.11.2018, 09:31
Помогаю со студенческими работами здесь

LINQ Right Join для двух коллекций
Всем привет! Народ подскажите вот какой момент. Есть у меня две коллекции экземпляров класса Person. DB - коллекция из БД FL -...

Выборка 2х таблиц LINQ без join
Здравствуйте! Недавно познакомился с LINQ запросами. Есть DataSet связанный с MSSQl БД. bindingSource1 привязан к datagridView Делаю...

В поисках опыта! DataTable LINQ Join выпадающие элементы
Доброго дня, господа! Есть две DataTable - в одной адреса, в другой координаты. допустим структура следующая: adrs(Adrs_ID, Adrs_Num,...

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

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


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

Или воспользуйтесь поиском по форуму:
14
Ответ Создать тему
Новые блоги и статьи
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
Камера Toupcam IUA500KMA
Eddy_Em 12.02.2026
Т. к. у всяких "хикроботов" слишком уж мелкий пиксель, для подсмотра в ESPriF они вообще плохо годятся: уже 14 величину можно рассмотреть еле-еле лишь на экспозициях под 3 секунды (а то и больше),. . .
И ясному Солнцу
zbw 12.02.2026
И ясному Солнцу, и светлой Луне. В мире покоя нет и люди не могут жить в тишине. А жить им немного лет.
«Знание-Сила»
zbw 12.02.2026
«Знание-Сила» «Время-Деньги» «Деньги -Пуля»
SDL3 для Web (WebAssembly): Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 12.02.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами и вызывать обработчики событий столкновения. . . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 11.02.2026
Содержание блога Библиотека SDL3 содержит встроенные инструменты для базовой работы с изображениями - без использования библиотеки SDL3_image. Пошагово создадим проект для загрузки изображения. . .
SDL3 для Web (WebAssembly): Загрузка PNG с прозрачным фоном с помощью SDL3_image
8Observer8 10.02.2026
Содержание блога Библиотека SDL3_image содержит инструменты для расширенной работы с изображениями. Пошагово создадим проект для загрузки изображения формата PNG с альфа-каналом (с прозрачным. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru