使用具有 Null 字段的 Group by 查询 DataContext 的正确方法

Proper way to query DataContext using Group by that has fields with Nulls

我正在使用 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?
有什么建议吗?

例如:

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

刚刚修改答案以添加另一个语法选项

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

我对此进行了更多挖掘,并解决了具有 0 个项目的组的问题,最终发现分组是在对象上使用空值完成的,但是幕后的连接使用的是内部连接。因此,它会创建适当的数字组,但不会因为数据库上的引用完整性而不会填充它们。我最终为此创建了一个具有适当关系的视图,并按照下面的建议处理了空值后,我让它工作了