Как правильно составить linq для соединения 3 сущностей?

Пользователь

от dorothea_stoltenberg , в категории: Другие , 4 месяца назад

Как правильно составить linq для соединения 3 сущностей?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

1 ответ

Пользователь

от jedidiah.brown , 4 месяца назад

@dorothea_stoltenberg 

Для соединения трех сущностей в LINQ можно использовать метод Join или методы Join и ThenJoin.


Ниже приведены примеры использования методов Join и ThenJoin для соединения трех сущностей.


Пример использования метода Join:

1
2
3
4
5
6
7
8
9
var result = from entity1 in entities1
             join entity2 in entities2 on entity1.Key equals entity2.Key
             join entity3 in entities3 on entity2.Key equals entity3.Key
             select new
             {
                 Entity1 = entity1,
                 Entity2 = entity2,
                 Entity3 = entity3
             };


Пример использования методов Join и ThenJoin:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
var result = from entity1 in entities1
             join entity2 in entities2 on entity1.Key equals entity2.Key
             join entity3 in entities3 on entity1.Key equals entity3.Key into group3
             from groupEntity3 in group3.DefaultIfEmpty()
             select new
             {
                 Entity1 = entity1,
                 Entity2 = entity2,
                 Entity3 = groupEntity3
             };


Оба примера предполагают, что сущности имеют общий ключ и хранятся в коллекциях entities1, entities2 и entities3 соответственно. В результате выполнения запроса будет получена коллекция объектов, содержащая каждую комбинацию сущностей, у которых ключи совпадают.


Обратите внимание, что вы можете настроить условия соединения и выборку полей в соответствии с вашими требованиями.