Форум программистов, компьютерный форум, киберфорум
C# для начинающих
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
 Аватар для Doomov
1056 / 335 / 119
Регистрация: 28.11.2020
Сообщений: 1,066

Соединение трех таблиц

04.07.2022, 09:36. Показов 422. Ответов 1

Студворк — интернет-сервис помощи студентам
Встал один вопрос: Соединить три таблицы с выводом на консоль...
И так: Классы
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
public class Country
{
    public int Id { get; set; }
    public string Name { get; set; }
}
public class Company
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int CountryId { get; set; }
    public Country Country { get; set; }
    public List<User> Users { get; set; } 
}
public class User
{
    public int Id { get; set; }
    public string Name { get; set; }
    public int Age { get; set; } 
    public int CompanyId { get; set; }
    public Company Company { get; set; }
}
Далее... Методы...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
static List<Country> MethodCountrys() => new List<Country>()
{
    new Country() { Id = 1, Name = "USA" },
    new Country() { Id = 2, Name = "Russia" }
};
 
static List<Company> MethodCompanys() => new List<Company>()
{
    new Company() { Id = 1, Name = "Microsoft", CountryId = 1 },
    new Company() { Id = 2, Name = "Google", CountryId = 2 }
};
 
private static List<User> MethodUsers() => new List<User>()
{
    new User() { Id = 1, Name = "Tom", Age = 36, CompanyId = 1 },
    new User() { Id = 2, Name = "Bob", Age = 39, CompanyId = 2 },
    new User() { Id = 3, Name = "Alice", Age = 28, CompanyId = 1 },
    new User() { Id = 4, Name = "Kate", Age = 25, CompanyId = 2 }
};
И само тело...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
    List<Country> Countries = MethodCountrys();
    List<Company> Companies = MethodCompanys();
    List<User> Users = MethodUsers();
    
    Countries.Dump("Countries");
    Companies.Dump("Companies");
    Users.Dump("Users");
    
    var resJoin1 = (from user in Users
                join company in Companies on user.CompanyId equals company.Id
                join country in Countries on company.CountryId equals country.Id
                select new
                {
                    Name = user.Name,
                    Company = company.Name,
                    Age = user.Age,
                    Country = country.Name
                })
                .OrderBy(x => x.Name)
                .ToList();
    resJoin1.Dump("resJoin");
Это сама прога... (Рабочая. Вопроса по ней нет...)
Теперь сам вопрос... Как реализовать Join методом расширения...
// Это первая часть...
C#
1
2
3
4
5
    var resJoin2 = Users.Join(Companies, 
                    u => u.CompanyId,
                    c => c.Id,
                    (u, c) => new { u = u, c = c })
        ...
Как теперь добавить третью таблицу?
Просто добавить ещё Join или есть короткий способ?

Добавлено через 1 час 29 минут
В общем я так решил...
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
    var resJoin2 = Users.Join(Companies, 
            u => u.CompanyId,
            c => c.Id,
            (u, c) => new { u = u, c = c })
            .Join(Countries,
                cc => cc.c.CountryId,
                cu => cu.Id,
                (cc, cu) => new
                {
                    Name = cc.u.Name, 
                    Company = cc.c.Name, 
                    Age = cc.u.Age, 
                    Country = cu.Name,
                })
            .OrderBy(x => x.Name)
            .ToList();
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
04.07.2022, 09:36
Ответы с готовыми решениями:

Соединение таблиц в ASP.NET
Ребят, я пишу диплом. В качестве реализации выбрана технология ASP.NET. Правда вот соображаю в ней не очень хорошо, хотя стараюсь понять...

Соединение таблиц и суммирование по полю
объясните, пожалуйста, 1)почему Сustomers=&quot;Анатолий&quot; выводит два раза и заные SumQty. И 2)откуда могло появится FName=&quot;Анатолий&quot;...

Выборка из трех таблиц
Есть три модели для Codefirst: public class Client { public int ClientId { get; set; } public string Name {...

1
403 / 265 / 69
Регистрация: 12.04.2020
Сообщений: 1,404
04.07.2022, 11:46
C#
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
List<Country> Countrys = new List<Country>()
{
    new Country() { Id = 1, Name = "USA" },
    new Country() { Id = 2, Name = "Russia" }
};
 
List<Company> Companys() = new List<Company>()
{
    new Company() { Id = 1, Name = "Microsoft", CountryId = 1, Country=Countrys[0]  },
    new Company() { Id = 2, Name = "Google", CountryId = 2, Country=Countrys[1] }
};
 
List<User> Users() = new List<User>()
{
    new User() { Id = 1, Name = "Tom", Age = 36, CompanyId = 1, Company=Company[0] },
    new User() { Id = 2, Name = "Bob", Age = 39, CompanyId = 2, Company=Company[1] },
    new User() { Id = 3, Name = "Alice", Age = 28, CompanyId = 1, Company=Company[0] },
    new User() { Id = 4, Name = "Kate", Age = 25, CompanyId = 2, Company=Company[1] }
};
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
04.07.2022, 11:46
Помогаю со студенческими работами здесь

Вывод данных из трех таблиц
спокойно разобрался с php и консольными приложениями на c++, но тут никак не могу даже составить план выполнения работы... DROP TABLE...

Соединение трёх таблиц
Друзья, помогите пожалуйста сделать запрос для выборки информации из БД в соответствии со скрином (данных, само собой, будет не одна...

Соединение трех таблиц и выборка без дубликатов
У нас имеются три таблицы WRK,LCT,SLR В WRK столбцы FIO|ZV|DOLG В LCT столбцы DOLG|GRA|NUM В SLR столбцы ZV|GRA|SAL Связь между...

соединение трех таблиц MS Access 2003 на форме в компаненте dataGridView1
Задача: вывести содержание главной таблици в компоненте dataGridView1, но чтобы в колоне, связаной релацией с другой таблицой, вместо...

Соединение двух таблиц, фильтрация данных по данным из этих 2 таблиц
Помогите, пожалуйста, написать запрос SQL в Delphi 7. Есть форма, на ней кнопка и DBGrid. DBGrid привязан к таблице Table_Dislokaciua....


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

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Новые блоги и статьи
модель ЗдравоСохранения 8. Подготовка к разному выполнению заданий
anaschu 08.04.2026
https:/ / github. com/ shumilovas/ med2. git main ветка * содержимое блока дэлэй из старой модели теперь внутри зайца новой модели 8ATzM_2aurI
Блокировка документа от изменений, если он открыт у другого пользователя
Maks 08.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа, разработанного в конфигурации КА2. Задача: запретить редактирование документа, если он открыт у другого пользователя. / / . . .
Система безопасности+живучести для сервера-слоя интернета (сети). Двойная привязка.
Hrethgir 08.04.2026
Далее были размышления о системе безопасности. Сообщения с наклонным текстом - мои. А как нам будет можно проверить, что ссылка наша, а не подделана хулиганами, которая выбросит на другую ветку и. . .
Модель ЗдрввоСохранения 7: больше работников, больше ресурсов.
anaschu 08.04.2026
работников и заданий может быть сколько угодно, но настроено всё так, что используется пока что только 20% kYBz3eJf3jQ
Дальние перспективы сервера - слоя сети с космологическим дизайном интефейса карты и логики.
Hrethgir 07.04.2026
Дальнейшее ближайшее планирование вывело к размышлениям над дальними перспективами. И вот тут может быть даже будут нужны оценки специалистов, так как в дальних перспективах всё может очень сильно. . .
Горе от ума
kumehtar 07.04.2026
Эта мне ментальная установка, что вот прямо сейчас, мол, мне для полного счастья не хватает (нужное вписать), и когда я этого достигну - тогда и полный кайф. Одна из самых сильных ловушек на пути. . . .
Использование значений реквизитов справочника в документе, с определенными условиями и правами
Maks 07.04.2026
1. Контроль срока действия договора Алгоритм из решения ниже реализован на примере нетипового документа "ЗаявкаНаРаботу", разработанного в конфигурации КА2. Задача: уведомлять пользователя, если. . .
Доступность команды формы по условию
Maks 07.04.2026
Алгоритм из решения ниже реализован на примере нетипового документа "СписаниеМатериалов", разработанного в конфигурации КА2. Задача: сделать доступной кнопку (команда формы "ЗавершитьСписание") при. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru