在 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 的解决方案比这个解决方案更干净