当我尝试通过连接字符串进行过滤时,无法创建类型(type)的常量值
本文关键字:类型 创建 type 常量 连接 过滤 字符串 | 更新日期: 2023-09-27 18:04:37
我想用linq to sql:
过滤用户的全名string agentName = "Jhone Doe TheFirst";
db.User.Where(a => agentName == (a.Person.Name+ ' ' +
a.Person.FirstName + ' ' +
a.Person.LastName).ToString()
&& !a.Deleted)
但是当我执行这个命令时,抛出了一个异常:
无法创建类型(type)的常数值(例如Int32, String和Guid)。
不能连接字符串?
如何按人名过滤用户?
它与sql有关联,所以我不能创建一个方法来返回人的全名并执行Person.GetFullName()
首先我必须承认我不是很熟悉Linq-To-Sql,所以这只是一个猜测。也许其中一个列是可空的,并且连接也产生NULL
,那么您可以通过使用空合并操作符来避免这种情况:
db.User.Where(a => (agentName == (a.Person.Name ?? "") + " "
+ (a.Person.FirstName ?? "") + " "
+ (a.Person.LastName ?? "")) && !a.Deleted)
请注意,我也将' '
替换为" "
。