Для первого, вот один способ переписать его в VB:
Dim defaultStyleName = (from style in _
doc.MainDocumentPart.StyleDefinitionsPart.GetXDocument().Root.Elements(w & "style") _
where style.Attribute(w & "type").Value = "paragraph" AndAlso _
style.Attribute(w & "default").Value = "1" _
select style).First().Attribute(w & "styleId").Value
Но это все же не так сильно отличается от того, что вы делаете в C #.
В VB.NET вы также можете использовать @ для атрибутов, как в style.@AttributeName
, что дает вам строковое значение атрибута, но я не уверен, как это будет работать с вашими объединенными именами атрибутов.
Кроме того, элементы могут быть доступны через синтаксис .<elementName>
, но, опять же, ваши объединенные имена могут не работать с этим.
Как правило, вызовы DirectCast
, производимые инструментами онлайн-конвертации, могут быть исключены в VB.
Чтобы узнать, как VB.NET работает с LINQ to XML, ознакомьтесь с серией видео How I от Бет Масси .