Возможно ли комбинировать Linq-to-SQL и Linq-to-XML, если столбец таблицы является XML?Объединение Linq-to-SQL и Linq-to-XML
ответ
Если под «объединить» вы имеете в виду «есть Linq для SQL перевести запрос в фактический SQL Server XML-запрос ", тогда я считаю, что ответ отрицательный. Но вам ничего не мешает вытащить данные XML и запустить на нем локальный XML-запрос.
Чтобы ответить на более общий вопрос «как работать с столбцом XML в этом сценарии», наилучшим подходом было бы создание пользовательской функции для обработки XML, если можно. Затем вы можете получить Linq для SQL для выполнения UDF.
В противном случае я бы отправил маршрут Хранимые процедуры.
Действительно, но затем я получаю переполнение памяти, потому что многие записи возвращаются. –
Ouch. См. Мое редактирование - надеюсь, UDF или SP могут работать для вас здесь. – Aaronaught
Действительно, хранимая процедура будет моей следующей мыслью. –
Да, это конечно возможно. Вы можете комбинировать любое количество источников IEnumerable в одном запросе. Например, вот статья показывает, как вы можете объединить L2S с Linq в Excel:
http://blogs.msdn.com/ericwhite/archive/2008/12/03/joining-linq-to-sql-and-linq-to-excel.aspx
Рэнди
Да, это вполне возможно, вот пример из Pro Linq по некто Джозеф Rattz:
using (NorthwindDataContext DB = new NorthwindDataContext())
{
string StatesXml =
@"<States>
<State ID=""OR"" Description=""Oregon"" />
<State ID=""WA"" Description=""Washington"" />
<State ID=""CA"" Description=""California"" />
<State ID=""ID"" Description=""Idaho"" />
<State ID=""MT"" Description=""Montana"" />
<State ID=""NM"" Description=""New Mexico"" />
</States>";
XElement States = XElement.Parse(StatesXml);
var Custs = (from c in DB.Customers
where c.Country == "USA"
select c).AsEnumerable().Join(
States.Elements("State"),
c => c.Region,
s => (string)s.Attribute("ID"),
(c, s) => new
{
Customer = c,
State = (string)s.Attribute("Description")
});
foreach (var Cust in Custs)
{
Console.WriteLine("Customer = {0} : {1} : {2}",
Cust.Customer.CompanyName,
Cust.Customer.Region,
Cust.State);
}
А вот что это выведет:
Great Lakes Food Market: OR: Oregon
Hungry Coyote Import Store: OR: Oregon
Ленивый K Kountry Store: WA: Вашингтон
Давайте прекратим N Магазин: CA: California
Lonesome Pine Ресторан: OR: Oregon
гремучая Каньон Бакалея: NM: Нью-Мексико
Save-A-Lot рынки: ID: Айдахо
The Big Cheese: OR: Oregon
взломщик Box: MT: Montana
Trail'S Глава Gourmet Provisioners: Вашингтон: Вашингтон
Белый клевер рынки: Вашингтон: Вашингтон
- 1. LinqToSql to LinqToXML - Различия
- 2. LinqToXml против LinqToSql
- 3. Объединение LinqToSql запросов
- 4. LinqToXml: синтаксический и верстку
- 5. Оптимизация LinqToXml
- 6. LinqToXml OR Xml?
- 7. XML чтения с LinqToXml
- 8. Перебор в LinqToXml запросе
- 9. Полиморфизм и LinqToSql
- 10. LinqtoSQL и проблемы
- 11. LinqToSql и DataContext 101
- 12. LinqToSql и WCF
- 13. LinqToSql и HashBytes
- 14. Breezee и linqtosql
- 15. LinqToXML XElement к XMLnode
- 16. Запрос на оптимизацию LinqToXML
- 17. LinqToXml: разбор словарю
- 18. LinqToXml удалить элемент confusion
- 19. Получение атрибутов в LINQToXML
- 20. LinqtoXML: Получение значений элемента
- 21. Фильтр Linqtoxml не работает
- 22. Наследование и полиморфизм в LinqToSql
- 23. LinqToSql и аудит изменили поля
- 24. LinqToSql - Параллельный - DataContext и Parallel
- 25. Вопрос LinqToSql и хранимой процедуры
- 26. Группировка и подсчет с LinqToSQL
- 27. Шаблон репозитория и методы LinqToSql
- 28. LinqToSql фильтр и порядок синтаксис
- 29. LinqToSql и абстрактные базовые классы
- 30. LinqToXML Почему это не работает?
Что вы имеете в виду под «объединить»? –
Linq to SQxML? :) –
Я имею в виду выполнение sql-запроса с использованием xpath с linq to sql с использованием linq для xml в нем. –