Использование XQuery в Linq To SQL? - PullRequest
15 голосов
/ 18 октября 2008

Допустим, у меня есть таблица со столбцом данных типа XML. В SQL я могу выполнить следующую инструкцию:

select   top 10  *,
         Content.value('(/root/item/value)[1]', 'float') as Value
from     xmltabletest
where    Content.value('(/root/item/MessageType)[1]', 'int') = 1

Результирующий набор содержит только записи, соответствующие критериям, и извлекает значение из XML в столбец с именем «Значение». Красиво и просто.

Можно ли добиться того же с помощью Linq To SQL?

Я бы хотел, чтобы SQL выполнял тяжелую работу и возвращал только данные, соответствующие моим критериям, а не отбирал, передавал и затем обрабатывал потенциально большой массив данных. Насколько я могу сказать, сейчас это невозможно, но я подумал, что должен спросить.

(Среда - .NET 3.5, VS2008, SQL Server 2005, если это помогает)

1 Ответ

5 голосов
/ 22 октября 2008

Я не совсем уверен, устарел ли он сейчас, но согласно Скотт Гатри Типы данных XML:

представлено как строки в LINQ to SQL Сущности. Вы можете использовать XLINQ для запроса в столбце XML в вашем LINQ для SQL Rightiy - но этот запрос будет случиться на вашем среднем уровне (в пределах ASP.NET). Вы не можете выполнить удаленный XQuery против базы данных и фильтра возвращенные результаты, основанные на том, что в первый выпуск.

Так что в ответ на ваш вопрос я бы сказал "нет".

...