Как создать предложение having в динамическом LINQ

#linq-to-sql #linq-expressions #dynamic-linq #dynamic-linq-core

Вопрос:

Я хочу найти повторяющиеся строки в таблице с учетом списка столбцов. Я использую динамический LINQ для группировки по столбцам, а затем хочу проверить, есть ли какие-либо записи, количество которых превышает 1.

Группа по функциям и количеству работает правильно. Однако я не уверен, как мне построить предложение having.

В настоящее время я получаю список количества групп в памяти, а затем определяю, есть ли какие-либо дубликаты.

 var columns = "new(FirstName, LastName)"
dynamic groups = await _dbContext.Users
                     .Where(x=>x.ClientID = 1234)
                     .GroupBy(columns)
                     .Select("new(Count() AS Count)")
                     .ToListAsync();
 

Я пытаюсь избежать загрузки списка в память. Запрос должен возвращать логическое значение, например Any() , если количество > 1

Ответ №1:

Я думаю, что понял это

 var columns = "new(FirstName, LastName)"
var found = _dbContext.Users
                     .Where(x=>x.ClientID = 1234)
                     .GroupBy(columns)
                     .Select("new(Count() AS Count)").Where("Count > 1").Any();