在 C# 中比较 Nullable long 和 Long
Comparing Nullable long with Long in C#
当 db column 为 Nullable long 时,我们应该做什么,这里 (Visit) 并且我有 VisitorIds 可以与之比较?
long[] VisitorIds = new long[] {1,2,3}; //an array to check with
.Where(x => vivitorIds.Contains(x.Visit)).ToList();
如果我在 linq 中转换为 long,它会抛出异常。
.Where(x => vivitorIds.Contains(Convert.ToInt64(x.Visit))).ToList();
只需检查可空值是否有值:
.Where(x => x.Visit.HasValue && vivitorIds.Contains(x.Visit.Value)).ToList();
我们可以使用null conditional operator
with null coalescing
,
//Considering long.MinValue is not a part of vivitorIds list.
.Where(x => vivitorIds.Contains(x?.Visit?.Value ?? long.MinValue)).ToList();
注意:这只是一个替代方法,Tim 的解决方案比这个解决方案更干净
当 db column 为 Nullable long 时,我们应该做什么,这里 (Visit) 并且我有 VisitorIds 可以与之比较?
long[] VisitorIds = new long[] {1,2,3}; //an array to check with
.Where(x => vivitorIds.Contains(x.Visit)).ToList();
如果我在 linq 中转换为 long,它会抛出异常。
.Where(x => vivitorIds.Contains(Convert.ToInt64(x.Visit))).ToList();
只需检查可空值是否有值:
.Where(x => x.Visit.HasValue && vivitorIds.Contains(x.Visit.Value)).ToList();
我们可以使用null conditional operator
with null coalescing
,
//Considering long.MinValue is not a part of vivitorIds list.
.Where(x => vivitorIds.Contains(x?.Visit?.Value ?? long.MinValue)).ToList();
注意:这只是一个替代方法,Tim 的解决方案比这个解决方案更干净