{"id":2554,"date":"2019-09-03T07:25:25","date_gmt":"2019-09-03T06:25:25","guid":{"rendered":"https:\/\/solidt.eu\/site\/?p=2554"},"modified":"2022-07-25T08:33:26","modified_gmt":"2022-07-25T07:33:26","slug":"c-linq-join-group-two-queryables","status":"publish","type":"post","link":"https:\/\/solidt.eu\/site\/c-linq-join-group-two-queryables\/","title":{"rendered":"C# Linq: join &#038; group two queryables"},"content":{"rendered":"\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using (var unitOfWork = UnitOfWorkFactory.Create())\n{ \n    var repository = GetRepository&lt;DmEmployeeGroup>(unitOfWork);\n    var employeeGroups = repository.AsQueryable();\n\n    var linkedRepository = GetRepository&lt;DmEmployeeGroupEmployee>(unitOfWork);\n    var groupEmployee = linkedRepository.AsQueryable();\n    \n    var joined = await employeeGroups\n            .Join(groupEmployee,\n                    (DmEmployeeGroup a) => a.Id,\n                    (DmEmployeeGroupEmployee b) => b.EmployeeGroupId,\n                    (a, b) => new { a, b })\n                .OrderBy(a => a.a.Id)\n                .ToListAsync();\n\n    var result = joined.GroupBy(x => x.a.Id) \n        .Select(x => {\n            var group = x.First().a;\n            group.Employees = x.Select(y => y.b);\n            return group;\n        });\n\n    return result.Select(so => so.ToDomain());\n}<\/pre>\n\n\n\n<p>Left join version:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"csharp\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">using (var unitOfWork = UnitOfWorkFactory.Create())\n{ \n    var repository = GetRepository&lt;DmEmployeeGroup>(unitOfWork);\n    var employeeGroups = repository.AsQueryable();\n    var linkedRepository = GetRepository&lt;DmEmployeeGroupEmployee>(unitOfWork);\n    var groupEmployee = linkedRepository.AsQueryable();\n    \n    var joined = await employeeGroups\n            .GroupJoin(groupEmployee.DefaultIfEmpty(),\n                    (DmEmployeeGroup a) => a.Id,\n                    (DmEmployeeGroupEmployee b) => b.EmployeeGroupId,\n                    (a, b) => new { a, b })\n                .ToListAsync();\n    var result = joined\n        .Select(x => {\n            x.a.Employees = x.b.ToList();\n            return x.a;\n        });\n    return result.Select(so => so.ToDomain());\n}<\/pre>\n","protected":false},"excerpt":{"rendered":"<p>Left join version:<\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"open","ping_status":"closed","sticky":false,"template":"","format":"standard","meta":{"inline_featured_image":false,"footnotes":""},"categories":[6,4,1],"tags":[],"class_list":["post-2554","post","type-post","status-publish","format-standard","hentry","category-dotnet","category-programming","category-uncategorized"],"_links":{"self":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2554","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/comments?post=2554"}],"version-history":[{"count":3,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2554\/revisions"}],"predecessor-version":[{"id":2557,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/posts\/2554\/revisions\/2557"}],"wp:attachment":[{"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/media?parent=2554"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/categories?post=2554"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/solidt.eu\/site\/wp-json\/wp\/v2\/tags?post=2554"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}