|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
||||||
Запрос LINQ (сложный)05.09.2019, 09:52. Показов 3549. Ответов 49
Метки нет (Все метки)
Добрый день!
Необходимо написать запрос. - есть три заказа в которых размещены объект, сами заказы находятся в коллекции «AllOrders»; - есть, выбранные неизвестным, объекты RO2, RO3 (Стул и чашка). Коллекция «SelectedRO» Необходимо найти заказы из коллекции «AllOrders», содержащие эти объекты и убрать все остальные объекты из этих заказов. В результате должны быть получены следующие объекты: Order1 содержащий RO2, RO3 (Стул и чашка) Order2 содержащий RO2 (Стул) Помогите пожалуйста, я уже третий час мучаюсь, все идеи иссякли.
0
|
||||||
| 05.09.2019, 09:52 | |
|
Ответы с готовыми решениями:
49
Написать LINQ запрос |
|
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
||
| 05.09.2019, 11:42 | ||
|
Добавлено через 1 минуту ---- А всё когда будет?
0
|
||
|
Модератор
|
||||||||||||
| 05.09.2019, 11:46 | ||||||||||||
|
Чипс, дополню мой вариант выше сравнением по значениям.
Класс компаратора
1
|
||||||||||||
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
||
| 05.09.2019, 11:46 [ТС] | ||
|
0
|
||
| 05.09.2019, 11:48 | |
|
0
|
|
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
|
| 05.09.2019, 11:49 | |
|
0
|
|
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
|
| 05.09.2019, 11:50 [ТС] | |
|
0
|
|
| 05.09.2019, 11:50 | ||||||
|
Элд Хасп, Тогда можно ещё накинуть интерфейс ICloneable, Сделать
0
|
||||||
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
|||||||
| 05.09.2019, 11:53 [ТС] | |||||||
|
Как я понял: Вы нашли заказы где присутствуют Стул и Чашка, а том вы в эти заказы добавили объекты из коллекции SelectedRO ?
0
|
|||||||
|
6497 / 3908 / 2006
Регистрация: 14.06.2018
Сообщений: 6,781
|
|||||||
| 05.09.2019, 11:55 | |||||||
Сообщение было отмечено Чипс как решение
Решение
1
|
|||||||
| 05.09.2019, 11:55 | |
|
Чипс, А если вам придётся расширять программу и снова обращаться к объектам, вы ещё раз их запросите у БД. Тип постоянно тормошить БД. Почему не обернуть пришедшие объекты в другой класс и на нём реализовать интерфейсы
0
|
|
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
||||||||||||
| 05.09.2019, 12:08 | ||||||||||||
|
Чипс, еще наркомании принес. Если RO1 в заказах и RO1 в SelectedRO, это одни и те же объекты, и можно ломать все полностью,то
Кликните здесь для просмотра всего текста
Если RO1 в одном заказе и RO1 в другом/в SelectedRO это разные объекты и их надо сравнивать по Id, то
1
|
||||||||||||
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
|||
| 05.09.2019, 12:14 [ТС] | |||
|
Запрос формирующий коллекцию для вывода на экран будет лежать отдельно, потом перепишу. Не бывает ничего более постоянного чем временное =) Спасибо вам amr-now ваш код мне более понятен. Спасибо Lexeq ваш вариант тоже хороший, но для меня сложновато. Спасибо всем кто думал.
0
|
|||
| 05.09.2019, 12:16 | |
|
Чипс, А причём тут бд. Ты вроде создаешь объекты в Шарпе. Объекты могут быть одинаковые но в памяти лежать в разных местах от этого они будут разные.
0
|
|
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
||
| 05.09.2019, 12:21 [ТС] | ||
|
Выкладывать все код из реальной задачи долго и не все станут в нём разбираться.
0
|
||
|
Модератор
|
|||||||
| 05.09.2019, 12:25 | |||||||
RentObject или их значений.Если сравнение объектов, то компаратора не надо. Только одна строка для получения результата
Можно конечно весь код сравнения значений перекинуть в LINQ запрос. Но проще ли это...? Добавлено через 1 минуту Если вам нужно сравнение по всем значениям, то используйте для RentObject не класс, а структуру. Тогда компаратор не будет нужен. Структуры сравниваются по значению (насколько помню).
0
|
|||||||
|
83 / 61 / 17
Регистрация: 21.08.2015
Сообщений: 1,094
|
|||||||
| 05.09.2019, 12:39 [ТС] | |||||||
В БД не должно быть такого : Id | Name 1 | qqq 1 | www А должно быть так: Id | Name 1 | qqq 2 | www Вы можете сделать два объекта с одинаковыми Id в коде, но при поиске "объекта" в БД по его Id вы всё ровно получите только одну запись. Допустим: Я нашёл Чашку и Стол в БД, по каким-то там параметрам, получил коллекцию в которой есть Id этих записей, дальше мне уже всё ровно, какие там это объекты, одинаковые или разные, с точки зрения C#, главное, что у них есть Id по которому я смогу их найти в БД, а там уже сравнить стул это или чашка. Ну вообщем как-то так.
0
|
|||||||
|
Модератор
|
||
| 05.09.2019, 12:45 | ||
|
Но в коде C# в методах расширения LINQ - не всегда. Для объектов - всегда нет. Для структур - да если все значения (Id, Name и др.) равны. Для других случаев надо задать правила по которым объекты считаются равными.
0
|
||
|
1151 / 743 / 483
Регистрация: 21.01.2014
Сообщений: 1,903
|
||||||
| 05.09.2019, 12:46 | ||||||
|
Элд Хасп, там еще нужно получить пересечение RentObjects и SelectedRO.
Чипс, так вы можете получить разными запросами, разные объекты для одной записи. Но тут вам виднее как вы работаете с базой. На самом деле вариантов можно много придумать, например вот еще. Оно не изменяет изначальные объекты
1
|
||||||
|
Модератор
|
|||||||
| 05.09.2019, 12:48 | |||||||
0
|
|||||||
|
Модератор
|
||
| 05.09.2019, 12:52 | ||
order => SelectedRO.Intersect(order.RentObjects).Any()
0
|
||
| 05.09.2019, 12:52 | |
|
LINQ групповой запрос+ LINQ запрос из ArrayList Необычный LINQ запрос Запрос Linq с конвертированием Как написать LinQ запрос Искать еще темы с ответами Или воспользуйтесь поиском по форуму: |
|
Новые блоги и статьи
|
|||
|
Часы электронные
Uhbif79 12.08.2026
Выкладываю программу часов. Программа позволяет:
1. Использовать системное время и дату,
2. Есть возможность вводить время и дату вручную.
3. Реализованы 2 будильника: начало и конец рабочего дня. . . .
|
Часы с будильником на основе класса QLCDNumber
Uhbif79 12.08.2026
Всем добрый день, выкладываю программу часов с будильником на основе класса QLCDNumber.
Здесь я пробовал самостоятельно создавал классы, впервые столкнулся с видимостью переменной одного класса из. . .
|
Установка MinGW GCC 16.2 и CMake
8Observer8 10.08.2026
VK Видео:
https:/ / vkvideo. ru/ video-240781534_456239017
YouTube:
eY5-5PyI9NM
Текстовая версия
|
Неделя из жизни имитационной модели склада: мои кривые руки растут, откуда надо
anaschu 10.08.2026
Неделя из жизни имитационной модели склада: как я почти написал неправильную логику и что с этим делать
Работаю сейчас над учебно-рабочим проектом: строю в AnyLogic имитационную модель процессов. . .
|
|
Калькулятор для расчета родства
russiannick 07.08.2026
1. Задача: Создать калькулятор для расчета родства.
Родственных связей существует 8 ступеней, такие как:
p - отец
P - мать
q - муж
Q - жена
b - брат
B - сестра
s - сын
S - дочь
|
Мир по моей воле
kumehtar 07.08.2026
Когда-то кажется, что всё просто. Ты весь такой светлый. Причиняешь добро. Борешься за справедливость в этом тёмном мире.
Потом начинаешь замечать одну неприятную вещь. Почти каждый хороший. . .
|
Кредитный калькулятор
Maks 05.08.2026
Решение задачи по прикладной информатике средствами 1С.
Задача:
Напишите приложение-калькулятор, которое помогает рассчитывать параметры кредита для аннуитетного и дифференцированного видов. . .
|
У нас сейчас поговорку "Опять 25" нужно переделать на "Опять +35".
kumehtar 04.08.2026
С ностальгией вспоминаю времена моего детства, когда у нас и правда +25 - была максимальная температура летом. Раньше +25 °C реально казались вершиной жары, когда можно было весь день пропадать на. . .
|