2014-05-22 48 views
0

我想通過自己的全名使用LINQ來過濾用戶到SQL過濾創建類型(Type)只有原始類型的恆定值:無法當我試圖通過concatened串

string agentName = "Jhone Doe TheFirst"; 


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

但是,當我執行此COMAND,一個execption拋出:

無法創建類型(類型)的恆定值只有原始類型 (「如的Int32,字符串,和GUID」)的支持。

連接字符串不可能嗎?

我該如何過濾用戶的全名?

它的LINQ to SQL的,所以我不能創建一個返回的人的全名的方法,並做了Person.GetFullName()

+0

這是一個字符串,我作爲參數傳遞,編輯 –

+2

你試過用'「」而不是''''? – Sayse

回答

3

首先,我必須承認,我沒那麼熟悉的LINQ到SQL ,所以這只是一個猜測。也許這些列的一個可空,級聯也產生NULL,那麼你可以通過使用空合併運算避免這種情況:

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

請注意,我還與" "更換' '

+0

已經+1版,但只是指出'string.Join'會更整齊 – Sayse

+0

@Sayse:_「LINQ to SQL不支持以下String方法:..... String.Format,String.Join 「_ http://msdn.microsoft.com/en-us/library/bb882672(v=vs.110).aspx –

+0

哦,對,我今天學到了一些新東西:) – Sayse