powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите с запросом LINQ
5 сообщений из 5, страница 1 из 1
Помогите с запросом LINQ
    #39265983
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Есть 2 таблицы:
А - [Id], [Cantion]
B - [Id], [Caption], [AId] - где [AId] - FKey на таблицу А (один ко многим)

допустим у нас в таблицах следующие данные:
таблица А:
IdCaption1 Format2 Material3 PrintMode

и таблица В:
Id Caption Aid1A512A413A314Mud25Paper26Single37Double3

предположим что мы хотим извлечь данные по форматам и материалам и передаем в функцию параметр List<A> из двух сущностей в итоге на выходе должны получить:
Some Cross DataA5 MudA5 PaperA4 MudA4 PaperA3 MudA3 Paper

сложнее становится когда мы например хотим извлечь данные по форматам, материалам и режимам.
Передаем в функцию параметр List<A> из трех сущностей в итоге на выходе должны получить:
Some Cross DataA5 Mud SingleA5 Mud DoubleA5 Paper SingleA5 Paper Double

и так далее.
Таблица А естесственно не ограничивается 3мя записями. Вот как-то так.
Помоги создать запрос...
...
Рейтинг: 0 / 0
Помогите с запросом LINQ
    #39265984
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а да!
Результирующая выборка помимо столбца [Some Cross Data] типа string должна еще содержать столбец (допустим [dict] типа List<B>) который будет содержать список и 2х сущностей В (см. пример 1) и из 3х сущностей (см. пример 2) и т.д.
...
Рейтинг: 0 / 0
Помогите с запросом LINQ
    #39267672
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
путем изысканий пришел вот к такому коду:
Код: c#
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
private static List<Data> ProcessData(IReadOnlyList<Property> list)
        {
            var z3 = list[0].PropertyValues.SelectMany(x => list[1].PropertyValues, (a, b) => new { a, b })
                .SelectMany(x => list[2].PropertyValues, (z, c) => new { z.a, z.b, c })
                .SelectMany(x => list[3].PropertyValues, (y, d) => new { y.a, y.b, y.c, d });

            return z3.Select(item => new Data
            {
                Name = $"{item.a.Name} {item.b.Name} {item.c.Name}\t{item.d.Name}",
                PropertyValues = new List<PropertyValue>
                {
                    item.a, item.b, item.c, item.d
                }
            }).ToList();
        }



код выполняет свои задачи, но сразу же видно, что он применим только если list.Count = 4...
можно конечно насоздавать много таких функций и вызывать их в зависимости от количества записей в list - но это просто супер костыль.
...
Рейтинг: 0 / 0
Помогите с запросом LINQ
    #39269338
Monochromatique
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нужен новый провайдер
...
Рейтинг: 0 / 0
Помогите с запросом LINQ
    #39271487
ughunter
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Нашел вот такую интересную статью... Возможно поможет.
Если так - напишу универсальный вариант решения и здесь опубликую.
Возможно будет полезно кому-то ))

Building LINQ Queries at Runtime in C#
...
Рейтинг: 0 / 0
5 сообщений из 5, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / Помогите с запросом LINQ
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]