如何检查数据库中byte[]类型文件是否存在?解决空引用异常
正确检查数据库中byte[]类型文件是否存在的方法
你的代码触发空引用异常的核心原因是:当数据库中没有匹配ResultsID的记录时,FirstOrDefault()会返回null,此时直接访问file.Data就会抛出空引用异常——问题出在file本身为null,而非Data的状态。
正确的检查逻辑需要分两步:
- 先判断查询到的
file对象是否存在(不为null) - 再判断
file.Data是否为null或长度为0
修正后的代码示例
var file = db.Attachments.Where(x => x.ResultsID == testResult).FirstOrDefault(); // 先检查file是否存在,再验证Data的有效性 if (file == null || file.Data == null || file.Data.Length == 0) { // 无有效文件的处理逻辑 } else { // 存在有效文件的处理逻辑 }
额外优化建议
如果只需要判断是否存在有效文件,可以直接在数据库查询阶段完成过滤,减少内存开销:
bool hasValidFile = db.Attachments .Any(x => x.ResultsID == testResult && x.Data != null && x.Data.Length > 0); if (!hasValidFile) { // 无有效文件的处理逻辑 }
内容的提问来源于stack exchange,提问作者Eli
相关产品推荐
相关产品推荐

