From d5dd79108911f3d3b2b5ebebb74999a4abe3ca00 Mon Sep 17 00:00:00 2001 From: pavlik-spp Date: Mon, 13 Oct 2025 21:47:00 +0300 Subject: [PATCH] Optiomization using join --- BenchmarkService.cs | 33 ++++++++++++++++++++++++++++++++- 1 file changed, 32 insertions(+), 1 deletion(-) diff --git a/BenchmarkService.cs b/BenchmarkService.cs index a32a5c8..94cbbdd 100644 --- a/BenchmarkService.cs +++ b/BenchmarkService.cs @@ -183,5 +183,36 @@ public List GetAuthors_Optimized_Struct1() .Take(2) .ToList(); } + + [Benchmark] + public List GetAuthors_Optimized_Struct_Join() + { + using var dbContext = new AppDbContext(); + + var date = new DateTime(1900, 1, 1); + + return dbContext.Authors + .Where(x => x.Country == "Serbia" && x.Age == 27) + .OrderByDescending(x => x.BooksCount) + .Take(2) + .Join(dbContext.Users, a => a.UserId, u => u.Id, (a, u) => + new AuthorDTO_OptimizedStruct + { + FirstName = u.FirstName, + LastName = u.LastName, + Email = u.Email, + UserName = u.UserName, + Age = a.Age, + Country = a.Country, + Books = a.Books.Where(b => b.Published.Year < 1900) + .Select(b => + new BookDTO_OptimizedStruct + { + Title = b.Name, + PublishedYear = b.Published.Year + }) + }) + .ToList(); + } } -} \ No newline at end of file +}