Использование XQuery в Linq To SQL?

Скажем, у меня есть таблица, в которой есть столбец данных типа 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

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

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

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