当我尝试通过连接字符串进行过滤时,无法创建类型(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()

当我尝试通过连接字符串进行过滤时,无法创建类型(type)的常量值

首先我必须承认我不是很熟悉Linq-To-Sql,所以这只是一个猜测。也许其中一个列是可空的,并且连接也产生NULL,那么您可以通过使用空合并操作符来避免这种情况:

db.User.Where(a => (agentName == (a.Person.Name      ?? "") + " " 
                              +  (a.Person.FirstName ?? "") + " " 
                              +  (a.Person.LastName  ?? ""))  && !a.Deleted)

请注意,我也将' '替换为" "