Linq将可空字符串与字符串进行比较

SDw*_*rfs 1 .net c# linq nullable

我有以下LINQ:

        var items = from n in db.Roles
                    where n.importID == importID
                    select n;
Run Code Online (Sandbox Code Playgroud)

"importID"是一个字符串作为参数和一个字符串?对于数据库对象.如果在数据库中importID为null,则不匹配.怎么做到这一点?

编译器消息:

Operator '==' cannot be applied to operands of type 'string?' and 'string'

RB.*_*RB. 6

字符串是引用类型,因此已经可以为空(即可以将其设置为null).Nullable类型的唯一目的是允许将值类型(例如整数,双精度等)设置为null.修复是声明importIdstring,而不是string?.

  • `string?`和一个可以是'DbNull`的值是两个*非常*不同的东西.请参阅[此问题](http://stackoverflow.com/questions/682429/how-can-i-query-for-null-values-in-entity-framework).`string?`将*总是*给你一个编译器错误('type'字符串'必须是一个不可为空的值类型,以便在泛型类型或方法'System.Nullable <T中将它用作参数'T' >'`). (2认同)