#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();