2010-01-13 40 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