#linqpad
#linqpad
Вопрос:
У меня есть столбец XML в SQL. И в нем есть искаженные данные. Что вызывает ошибку «Существует несколько корневых элементов».когда я запускаю MyTable.Take(4).Dump();
например
<cy>
<n>NameA</n>
<p>true</p>
</cy>
<cy>
<n>NameB</n>
<p>false</p>
</cy>
Есть ли способ указать LINQPad не сериализовать столбец XML и предоставить его в виде строки?
К сожалению, данные связаны со многими местами, поэтому я не могу сразу обернуть их корневым элементом в базе данных.
Комментарии:
1. интересно, что когда я пытаюсь
MyTable.Take(4).Dump();
, я получаю ту же ошибку, что и вы, ноMyTable.Take(4).Select(row => row.XmlColumnName.ToString()).Dump();
это работает. Итак, я предполагаю, что ответ заключается в том, чтобы спроецировать столбец на строку таким образом?2. Это определенно обходной путь, и я ценю это. Однако я хотел бы оставить вопрос открытым, на случай, если @joe-albahari может предоставить метод сериализации на основе свойств, как он это сделал для параметров исключения свойств. Еще раз спасибо
3. вы видели linqpad.net/CustomizingDump.aspx ? 🙂
4. Я говорил об этом, когда упоминал
exclude
метод. 🙂 Отличный улов! К сожалению, ошибка, вызванная ранее.Dump()
.Take(4)
. Мне нужно иметь возможность взаимодействовать сLINQPad.User.*
запросами на начальном уровне сериализации.
Ответ №1:
Последняя бета-версия LINQPad, версия 5.10.06, позволяет вам получать доступ к столбцам XML в виде строк:
НОВОЕ / УЛУЧШЕННОЕ:
В диалоговом окне дополнительных свойств подключения SQL установлен новый флажок, чтобы сопоставлять столбцы XML с .NET
string
s вместоXElement
s. Это позволяет вам запрашивать таблицы с искаженным XML без ошибок.