首页 > 解决方案 > 如何获取可能为空的数据库字段的长度

问题描述

我正在尝试获取数据库中最长的特定字段的长度(以字符为单位),即使在没有字段值的情况下也是如此。有时在我们的数据库中没有任何 .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,或者如果该特定字段中有值,则返回最大字符数。

谢谢你的帮助!

标签: c#asp.net-mvclinq

解决方案


在此语句中,您正在检查整个记录是否为空:

.Max(x => x == null ? 0 : x.UnitID.Length);

虽然您必须特别检查该列UnitID是否为空;所以试试这个:

.Max(x => x.UnitID == null ? 0 : x.UnitID.Length);

推荐阅读