![](/img/trans.png)
[英]unable to create a constant value of type anonymous type only primitive types
[英]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.