簡體   English   中英

當我嘗試通過串聯字符串過濾時,無法創建類型(類型)的常量值

[英]Unable to create a constant value of type (type) Only primitive types when i try to filter by concatened strings

我想用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)

但是當我執行此命令時,會拋出一個執行:

無法創建類型(類型)的常量值。僅支持基本類型(例如Int32,String和Guid)。

串起來不是不可能的嗎?

如何按人員全名過濾用戶?

它對SQL的linq,所以我無法創建一個返回人員全名並執行Person.GetFullName()

首先,我必須承認我對Linq-To-Sql並不那么熟悉,所以這只是一個猜測。 也許這些列之一是可為空的,並且串聯也產生NULL ,那么您可以通過使用null-coalescing運算符避免這種情況:

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

注意我也用" "代替了' '

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM