在LINQ查询中将xml转换为字符串

时间:2010-01-13 14:39:15

标签: sql 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;

Interactions是SQL2008 Server中的XML列。

2 个答案:

答案 0 :(得分:0)

等等,你的意思是:

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

Linq中的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是一个具有公共属性Interactions的类型,它是一个XElement。当然,如果是,你应该解析XML而不是看xml文本是否包含特定的字符串。

答案 1 :(得分:0)

你试过了吗?

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

根据SqlMetal决定用于XML列的数据类型(通常是我认为的XNode或XElement),ToString()将返回XML作为适合您的字符串。