2010-01-13 4 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; 

взаимодействия является XML-столбца в SQL2008 Server.

+0

Можете ли вы сообщить нам, какой тип данных SubSonic использует для взаимодействия? –

ответ

0

Подождите, вы имеете в виду, как:

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

XML в Linq представлена ​​семейством 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

Я имел в виду второй. Ну, разбор XML в запросе linq с помощью linq для xml не представляется возможным. –

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 не поддерживает его. –

Смежные вопросы