From 6d560caf06f86054226b438c5b53b757e1c19d5b Mon Sep 17 00:00:00 2001 From: Nicolas Dorier Date: Thu, 22 Aug 2024 18:52:53 +0900 Subject: [PATCH] Small optimization of query (#6153) --- .../Services/Invoices/InvoiceRepository.cs | 22 +++++++++++++++---- 1 file changed, 18 insertions(+), 4 deletions(-) diff --git a/BTCPayServer/Services/Invoices/InvoiceRepository.cs b/BTCPayServer/Services/Invoices/InvoiceRepository.cs index 5c7f5523f..84f2d3de0 100644 --- a/BTCPayServer/Services/Invoices/InvoiceRepository.cs +++ b/BTCPayServer/Services/Invoices/InvoiceRepository.cs @@ -662,13 +662,27 @@ retry: if (queryObject.OrderId is { Length: > 0 }) { - var orderIdSet = queryObject.OrderId.ToHashSet().ToArray(); - query = query.Where(i => orderIdSet.Contains(i.OrderId)); + if (queryObject.OrderId is [var orderId]) + { + query = query.Where(i => i.OrderId == orderId); + } + else + { + var orderIdSet = queryObject.OrderId.ToHashSet().ToArray(); + query = query.Where(i => orderIdSet.Contains(i.OrderId)); + } } if (queryObject.ItemCode is { Length: > 0 }) { - var itemCodeSet = queryObject.ItemCode.ToHashSet().ToArray(); - query = query.Where(i => itemCodeSet.Contains(i.ItemCode)); + if (queryObject.ItemCode is [var itemCode]) + { + query = query.Where(i => i.ItemCode == itemCode); + } + else + { + var itemCodeSet = queryObject.ItemCode.ToHashSet().ToArray(); + query = query.Where(i => itemCodeSet.Contains(i.ItemCode)); + } } var statusSet = queryObject.Status is { Length: > 0 }