Правильный способ запроса DataContext с помощью Group, который имеет поля с нулями - PullRequest
1 голос
/ 09 июля 2019

Я использую Entity Framework и запрашиваю данные с помощью предложения Group By.В группе по есть несколько столбцов, которые должны быть использованы.Некоторые из столбцов могут иметь нулевые значения.Проблема в том, что когда он возвращается, у него есть все правильное количество групп, но он ничего не добавляет к группам.Таким образом, группа представляет собой группу из 0 пунктов.Вот код ниже.

 using (_context = new DbContext())
                {

                    var groups = await _context.vw_PersonItem
                    .AsExpandable()
                    .Where(x => x.PersonName != "")
                    .GroupBy(x => new
                    {
                        x.PersonName,
                        x.Addressline1,
                        x.State,
                        x.Zip,
                        x.FavoriteColor   //< This Can Be Null
                    })
                    .ToListAsync(); 




                  int uniqueCount = 1;

                    foreach (var grp in groups)   // <  It has groups with 0 items
                    {
                            uniqueCount++;

                    }
};

Он не выдает ошибку, и он правильно подсчитывает количество сгруппированных элементов, но, где он находит ноль в одном из полей группировки по группам, группа имеет счетчик 0?
Любой совет?

Ответы [ 2 ]

2 голосов
/ 10 июля 2019

в качестве примера:

.GroupBy(x => x?.FavoriteColor ?? -1)

только что изменили ответ, чтобы добавить еще одну опцию синтаксиса

GroupBy(x => x.FavoriteColor == null ? -1 : x.FavoriteColor)
0 голосов
/ 10 июля 2019

Я проделал кучу копаний по этому вопросу, и проблема с Группами с 0 элементами, в конечном итоге закончилась тем, что Группировка выполнялась на Объекте с использованием Nulls, однако соединения за кулисами использовали внутренние объединения. Таким образом, он будет создавать правильные группы номеров, но не будет просто заполнять их из-за ссылочной целостности в базе данных. Я закончил тем, что создал View с Правильными Отношениями для этого, и после обработки нулей, как предложено ниже, у меня это работает

...