有没有办法在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列。
答案 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作为适合您的字符串。