繁体   English   中英

Entity Framework Group BY 导致无法将“System.DBNull”类型的对象转换为“System.String”类型

[英]Entity Framework Group BY causing Unable to cast object of type 'System.DBNull' to type 'System.String'

我正在尝试运行以下 EF 查询并在某些数据库实例上返回异常

//Contacts Stats  summary 
Dictionary<ContactStatusEnum, int> contactStats = (await context.Contacts.ToListAsync())
                                            .GroupBy(n => n.Status)
                                            .ToDictionary(x => x.Key, x => x.Count());
                        
                

这导致异常异常:无法将“System.DBNull”类型的对象转换为“System.String”类型。

同时我执行了sql

SELECT status,COUNT(*) FROM contacts group BY STATUS

并且正在执行而没有任何错误。 另外,所有联系人记录都存在状态值

相同的代码适用于舞台或 DEV db

你可以修改如下

//Contacts Stats  summary 
Dictionary<ContactStatusEnum, int> contactStats = (await context.Contacts.Where(cn=>cn.status!=null).ToListAsync())
                                        .GroupBy(n => n.Status)
                                        .ToDictionary(x => x.Key, x => x.Count());

否则按照这个

//Contacts Stats  summary 
Dictionary<ContactStatusEnum, int> contactStats = (await context.Contacts.ToListAsync())
                                    .GroupBy(n => n.Status ?? string.Empty)
                                    .ToDictionary(x => x.Key, x => x.Count());

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM