c# - 如何获取可能为空的数据库字段的长度
问题描述
我正在尝试获取数据库中最长的特定字段的长度(以字符为单位),即使在没有字段值的情况下也是如此。有时在我们的数据库中没有任何 .UnitID 的值,这会在尝试使用 .Max() 时引发错误。这是我当前的查询:
var unitIDWidth = data.DefaultIfEmpty().Max(x => x == null ? 0 : x.UnitID.Length);
我认为这段代码可以工作,但它仍然抛出这个异常:
'转换为值类型'System.Int32' 失败,因为具体化值为空。结果类型的通用参数或查询必须使用可为空的类型。
我也试过这个:
var unitIDWidth = data.Where(x=>x.UnitID != null).Select(x=>x.UnitID.Length).Max();
但它也会引发异常。
如果所有值都为空,我需要此查询返回 0,或者如果该特定字段中有值,则返回最大字符数。
谢谢你的帮助!
解决方案
在此语句中,您正在检查整个记录是否为空:
.Max(x => x == null ? 0 : x.UnitID.Length);
虽然您必须特别检查该列UnitID
是否为空;所以试试这个:
.Max(x => x.UnitID == null ? 0 : x.UnitID.Length);
推荐阅读
- css - CSS 相对位置对 DOM 渲染有性能影响吗?
- android - Firebase Crashlytics 与 Fabric Crashlytics
- java - Is there a modern way to run java applications in browser?
- robotframework - 如何通过 Robot 框架在 unix 中顺序执行多个命令?
- python - 为 ndb.tasklets 输入注释
- ajax - wp_send_json* functions do a weird float values conversion
- java - 多个 JComboBox 侦听器
- python - Getting the name of a class which has a meta class
- sql - How to retrieve all user tables, corresponding columns and data types in SQL Server?
- html - 从 HTML 片段中删除任何视频