我有以下LINQ:
var items = from n in db.Roles
where n.importID == importID
select n;
“importID”是一个字符串作为参数和一个字符串?对于数据库对象。如果在数据库中importID为null,则不匹配。怎么做到这一点?
编译器消息:
Operator '==' cannot be applied to operands of type 'string?' and 'string'
答案 0 :(得分:6)
字符串是引用类型,因此已经可以为空(即可以将其设置为null)。 Nullable类型的唯一目的是允许将值类型(例如整数,双精度等)设置为null。修复方法是将importId
声明为string
,而不是string?
。
答案 1 :(得分:4)
var items = from n in db.Roles
where n.importID.HasValue && n.importId.Value == importID
select n;
答案 2 :(得分:0)
您也可以使用.GetValueOrDefault()
简短查询可以......
var items = from n in db.Roles
where n.importID == importID.GetValueOrDefault()
select n;
答案 3 :(得分:0)
var items = from n in db.Roles
where !string.IsNullOrEmpty(n.importID) && n.importID == importID
select n;