Форум программистов, компьютерный форум, киберфорум
Наши страницы
LINQ
Войти
Регистрация
Восстановить пароль
 
Рейтинг 4.80/5: Рейтинг темы: голосов - 5, средняя оценка - 4.80
sexnmoney
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 19
1

LINQ запрос для 2-х таблиц, связанных через 3-ю

06.11.2015, 16:34. Просмотров 950. Ответов 4
Метки нет (Все метки)

Здравствуйте. В проекте существует 2 класса:
1-й
C#
1
2
3
4
5
6
public class People
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual ICollection<FitCategoryStaffBond> FitCategoryStaffBonds { get; set; }
    }
2-й
C#
1
2
3
4
5
6
7
public class Office
    {
        public int Id { get; set; }
        public string Name { get; set; }
        public virtual City City { get; set; }
        public virtual ICollection<OfficePeople> OfficePeoples { get; set; }
    }
которые связаны, через 3й класс:
C#
1
2
3
4
5
6
public class OfficePeople 
    {
        public int Id { get; set; }
        public virtual People Peoples { get; set; }
        public virtual Office Offices { get; set; }
    }
на основе этих классов формируется таблицы sql. мне надо вытянуть список всех People, которые сохраняются в отдельную модель, при этом в этом моделе нужно поле City из класса Office. пишу вот такой запрос:
C#
1
Office = context.Offices .Where(f => f.Id == s.OfficePeoples .Where(fs => fs.People.Id == s.Id).SingleOrDefault().Offices .Id).FirstOrDefault().Office.Name,
но такое работает. может как-то громоздко объяснил

Добавлено через 5 минут
*не работает
0
Лучшие ответы (1)
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
06.11.2015, 16:34
Ответы с готовыми решениями:

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

Как сделать обновление сразу в несколько таблиц через LINQ
В одну таблицу я делаю обновление так: using (InventatorDataBaseEntities...

Запрос Linq через промежуточную таблицу
Здравствуйте! Мой проект - бронирование номером в гостинице. И вот я подошел к...

Как через LINQ-запрос получить доступ к информации находящейся в конкретном листе книги
Так я получаю доступ к Excel через VB.NET: Dim objExcel As New...

Нужен запрос по LINQ to Object (для Dictionary)
Здравствуйте. Нужен совет знатоков. Коротко о проблеме: есть коллекция...

4
WinDev
76 / 76 / 51
Регистрация: 11.06.2015
Сообщений: 189
Завершенные тесты: 3
09.11.2015, 19:23 2
в LINQ есть метод JOIN. В данной ситуации он более подходящий. С помощью вложенных блоков WHERE вряд ли получится такое сделать. И по поводу задания: нужно вместе с каждым человеком вывести город, в офисе которого он работает?
0
sexnmoney
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 19
09.11.2015, 20:57  [ТС] 3
да, именно так. с каждым человеком вывести город
0
WinDev
76 / 76 / 51
Регистрация: 11.06.2015
Сообщений: 189
Завершенные тесты: 3
10.11.2015, 00:03 4
Лучший ответ Сообщение было отмечено Metall_Version как решение

Решение

Так как вашей бд модели у меня нет, то данный код накидал примерно. Вместо бд сделал пару фейковых списков с классами, указанными выше - все работает. Метод join такой же и в entity framework, возможно лишь малые поправки придется внести.
C#
1
var manWithOffice = context.Peoples.Join(context.OfficePeoples, e => e.Id, e => e.Peoples.Id, (man, hisoffice) => new { people = man, city = hisoffice.Offices.City});
Данный код создает коллекцию безымянного типа, в которой лежат пары (сотрудник , офиc).
1
sexnmoney
0 / 0 / 0
Регистрация: 28.03.2015
Сообщений: 19
10.11.2015, 16:10  [ТС] 5
большое спасибо, работает
0
10.11.2015, 16:10
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
10.11.2015, 16:10

LINQ запрос для поиска вхождений строки
Вечер добрый, такой вопрос, как сформулировать LINQ запрос, что бы он выдал все...

LIKE для LINQ: Сделать запрос на выбор значений, содержащих в себе значения из другой таблицы
Имеется две таблицы. Table1 Ивановский Петр Петрович Иванович...

Переписать SQL запрос в LINQ запрос
День добрый всем. Подскажите, пожалуйста, как можно преобразовать запрос: ...


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru