2010-01-13 44 views
1

有沒有方法將xml轉換爲Linq查詢中的字符串。像這樣的事情,但在LINQ:將xml轉換爲LINQ查詢中的字符串

select TOP(10) * from PackageSessionNodes 
where CAST(Interactions as nvarchar(max)) like '%asset id%' 
order by PackageSessionNodeId desc 

這不起作用:

var packageSessionNodes = from psn in db.PackageSessionNodes 
          where psn.Interactions.Contains("asset") 
          select psn; 

相互作用是SQL2008服務器一個XML列。

+0

您能否讓我們知道什麼樣的數據類型SubSonic用於交互? – 2010-01-13 15:38:52

回答

0

等待,你的意思是這樣的:在LINQ的

var packageSessionNodes = from psn in db.PackageSessionNodes 
          where psn.Interactions.Contains("asset") 
          select psn.ToString(); 

XML是由XNode家庭類型的代表。 XNode.ToString()返回xml representation of the node and its children.

或者,你的意思

var packageSessionNodes = from psn in db.PackageSessionNodes 
          where ((string)psn.Interactions).Contains("asset") 
          select psn; 

假設PSN是一個具有公共屬性的相互作用是一個的XElement類型。當然,如果是這樣,您應該解析XML而不是查看xml文本是否包含特定字符串。

+0

我的意思是第二個。那麼,將linq查詢中的xml解析爲xml似乎不可能。 – 2010-01-13 15:01:24

0

你試過:

var packageSessionNodes = from psn in db.PackageSessionNodes 
          where psn.Interactions.ToString().Contains("asset") 
          select psn 

根據什麼數據類型SqlMetal決定用你的XML列(通常是XNode或的XElement我相信),ToString()將返回XML作爲一個字符串,它應該工作您。

+0

不起作用。它是Linq的SubSonic,所以也許問題是SubSonic不支持它。 – 2010-01-13 15:28:34