2009-11-30 66 views
0

我已經下載Subsonic 3.0.0.3,並且在我的MSSQL數據庫中有一個XML DataType。該屬性作爲一個字符串返回,但是如何創建一行代碼來按該列中的內容進行過濾。Subsonic - 按XML列過濾DataType

如果我嘗試類似from x in Table.All() where x.XMLColumn.Contains("test")那麼它會拋出一個異常,因爲雖然該屬性是一個字符串,並且上面的代碼在將它轉換爲SQL時進行編譯,但對於該列類型不正確。

回答

2

另一種選擇是投屬性值作爲對象,然後調用其ToString()方法。這會導致Subsonic linq提供程序顯式將XMLColumn值轉換爲NVARCHAR(MAX)

from x in Table.All() where ((object)x.XMLColumn).ToString().Contains("test") 

您需要的造型,因爲LINQ提供程序將忽略轉換到SQL時String.ToString()方法調用。這是一種黑客攻擊,但它確實解決了這個問題。