From 5d79afdfc3d1d0303b033685e58d4bd10e7f4cb2 Mon Sep 17 00:00:00 2001 From: Natalia Portillo Date: Sat, 30 May 2020 16:16:04 +0100 Subject: [PATCH] Fix some complex LINQ queries not convertible to SQL. --- Marechai/Services/ResolutionsByGpuService.cs | 27 ++++----- .../Services/ResolutionsByScreenService.cs | 27 ++++----- Marechai/Services/ScreensService.cs | 55 ++++++++----------- 3 files changed, 51 insertions(+), 58 deletions(-) diff --git a/Marechai/Services/ResolutionsByGpuService.cs b/Marechai/Services/ResolutionsByGpuService.cs index 83ecbdf1..d43ad9cc 100644 --- a/Marechai/Services/ResolutionsByGpuService.cs +++ b/Marechai/Services/ResolutionsByGpuService.cs @@ -14,19 +14,20 @@ namespace Marechai.Services public ResolutionsByGpuService(MarechaiContext context) => _context = context; public async Task> GetByGpu(int resolutionId) => - await _context.ResolutionsByGpu.Where(r => r.ResolutionId == resolutionId). - Select(r => new ResolutionByGpuViewModel - { - Id = r.Id, GpuId = r.GpuId, Resolution = new ResolutionViewModel - { - Id = r.Resolution.Id, Width = r.Resolution.Width, Height = r.Resolution.Height, - Colors = r.Resolution.Colors, Palette = r.Resolution.Palette, - Chars = r.Resolution.Chars, Grayscale = r.Resolution.Grayscale - }, - ResolutionId = r.ResolutionId - }).OrderBy(r => r.Resolution.Width).ThenBy(r => r.Resolution.Height). - ThenBy(r => r.Resolution.Chars).ThenBy(r => r.Resolution.Grayscale). - ThenBy(r => r.Resolution.Colors).ThenBy(r => r.Resolution.Palette).ToListAsync(); + (await _context.ResolutionsByGpu.Where(r => r.ResolutionId == resolutionId). + Select(r => new ResolutionByGpuViewModel + { + Id = r.Id, GpuId = r.GpuId, Resolution = new ResolutionViewModel + { + Id = r.Resolution.Id, Width = r.Resolution.Width, Height = r.Resolution.Height, + Colors = r.Resolution.Colors, Palette = r.Resolution.Palette, + Chars = r.Resolution.Chars, Grayscale = r.Resolution.Grayscale + }, + ResolutionId = r.ResolutionId + }).ToListAsync()).OrderBy(r => r.Resolution.Width).ThenBy(r => r.Resolution.Height). + ThenBy(r => r.Resolution.Chars).ThenBy(r => r.Resolution.Grayscale). + ThenBy(r => r.Resolution.Colors).ThenBy(r => r.Resolution.Palette). + ToList(); public async Task DeleteAsync(long id) { diff --git a/Marechai/Services/ResolutionsByScreenService.cs b/Marechai/Services/ResolutionsByScreenService.cs index 47faeea6..587fb034 100644 --- a/Marechai/Services/ResolutionsByScreenService.cs +++ b/Marechai/Services/ResolutionsByScreenService.cs @@ -14,19 +14,20 @@ namespace Marechai.Services public ResolutionsByScreenService(MarechaiContext context) => _context = context; public async Task> GetByScreen(int resolutionId) => - await _context.ResolutionsByScreen.Where(r => r.ResolutionId == resolutionId). - Select(r => new ResolutionByScreenViewModel - { - Id = r.Id, ScreenId = r.ScreenId, Resolution = new ResolutionViewModel - { - Id = r.Resolution.Id, Width = r.Resolution.Width, Height = r.Resolution.Height, - Colors = r.Resolution.Colors, Palette = r.Resolution.Palette, - Chars = r.Resolution.Chars, Grayscale = r.Resolution.Grayscale - }, - ResolutionId = r.ResolutionId - }).OrderBy(r => r.Resolution.Width).ThenBy(r => r.Resolution.Height). - ThenBy(r => r.Resolution.Chars).ThenBy(r => r.Resolution.Grayscale). - ThenBy(r => r.Resolution.Colors).ThenBy(r => r.Resolution.Palette).ToListAsync(); + (await _context.ResolutionsByScreen.Where(r => r.ResolutionId == resolutionId). + Select(r => new ResolutionByScreenViewModel + { + Id = r.Id, ScreenId = r.ScreenId, Resolution = new ResolutionViewModel + { + Id = r.Resolution.Id, Width = r.Resolution.Width, Height = r.Resolution.Height, + Colors = r.Resolution.Colors, Palette = r.Resolution.Palette, + Chars = r.Resolution.Chars, Grayscale = r.Resolution.Grayscale + }, + ResolutionId = r.ResolutionId + }).ToListAsync()).OrderBy(r => r.Resolution.Width).ThenBy(r => r.Resolution.Height). + ThenBy(r => r.Resolution.Chars).ThenBy(r => r.Resolution.Grayscale). + ThenBy(r => r.Resolution.Colors).ThenBy(r => r.Resolution.Palette). + ToList(); public async Task DeleteAsync(long id) { diff --git a/Marechai/Services/ScreensService.cs b/Marechai/Services/ScreensService.cs index 3cc333a0..3af989f3 100644 --- a/Marechai/Services/ScreensService.cs +++ b/Marechai/Services/ScreensService.cs @@ -13,38 +13,29 @@ namespace Marechai.Services public ScreensService(MarechaiContext context) => _context = context; - public async Task> GetAsync() => await _context.Screens.Select(s => new ScreenViewModel - { - Diagonal = s.Diagonal, - EffectiveColors = s.EffectiveColors, - Height = s.Height, Id = s.Id, - Type = s.Type, Width = s.Width, - NativeResolutionId = - s.NativeResolutionId, - NativeResolution = - new ResolutionViewModel - { - Chars = s.NativeResolution. - Chars, - Colors = s.NativeResolution. - Colors, - Grayscale = s. - NativeResolution. - Grayscale, - Height = s.NativeResolution. - Height, - Id = s.NativeResolution.Id, - Palette = s.NativeResolution. - Palette, - Width = s.NativeResolution. - Width - } - }).OrderBy(s => s.Diagonal). - ThenBy(s => s.EffectiveColors). - ThenBy(s => s.NativeResolution. - ToString()). - ThenBy(s => s.Type).ThenBy(s => s.Size). - ToListAsync(); + public async Task> GetAsync() => (await _context.Screens.Select(s => new ScreenViewModel + { + Diagonal = s.Diagonal, + EffectiveColors = s.EffectiveColors, + Height = s.Height, Id = s.Id, Type = s.Type, + Width = s.Width, + NativeResolutionId = s.NativeResolutionId, + NativeResolution = new ResolutionViewModel + { + Chars = s.NativeResolution.Chars, + Colors = s.NativeResolution.Colors, + Grayscale = s.NativeResolution.Grayscale, + Height = s.NativeResolution.Height, + Id = s.NativeResolution.Id, + Palette = s.NativeResolution.Palette, + Width = s.NativeResolution.Width + } + }).ToListAsync()).OrderBy(s => s.Diagonal). + ThenBy(s => s.EffectiveColors). + ThenBy(s => s.NativeResolution. + ToString()). + ThenBy(s => s.Type). + ThenBy(s => s.Size).ToList(); public async Task GetAsync(int id) => await _context.Screens.Where(s => s.Id == id).Select(s => new ScreenViewModel