1

我有以下 LINQ:

        var items = from n in db.Roles
                    where n.importID == importID
                    select n;

“importID”是一个字符串作为参数和一个字符串?对于数据库对象。如果数据库中的 importID 为空,则不应匹配。如何做到这一点?

编译器消息:

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

4

4 回答 4

6

字符串是一种引用类型,因此已经可以为空(即您可以将其设置为空)。Nullable 类型的唯一目的是允许将值类型(如整数、双精度等)设置为 null。解决方法是声明importIdstring,而不是string?

于 2012-09-18T08:23:25.613 回答
4
var items = from n in db.Roles
            where n.importID.HasValue && n.importId.Value == importID
            select n;
于 2012-09-18T08:21:44.290 回答
0

你也可以使用.GetValueOrDefault()

在短查询中可以...

var items = from n in db.Roles
                where n.importID == importID.GetValueOrDefault()
                select n;
于 2012-09-18T09:09:01.257 回答
0
var items = from n in db.Roles
                    where !string.IsNullOrEmpty(n.importID) && n.importID == importID
                    select n;
于 2012-09-18T09:24:45.113 回答