运算符 'Like' 没有为类型 'System.Xml.Linq.XName' 和 'String' 定义
Operator 'Like' is not defined for types 'System.Xml.Linq.XName' and 'String'
我需要检索像“*-Font”这样的元素名称,然后检索属性值。
这是使用的 linq...
Dim categories = From dc as xelement In Xml.DescendantsAndSelf("defaults") _
let Id = lw.name _
Where Id = "*-Font" _
let FontFamily = lw.attribute("font-family").value _
let FontSize = lw.attribute("font-size").value _
Select Id, FontFamily, FontSize
这是 xml 示例...
<defaults>
<scaling>1</scaling>
<page-layout>2</page-layout>
<system-layout>3</system-layout>
<appearance>4</appearance>
<default-font font-family="Arial" font-size="20.4"/>
<word-font font-family="Times New Roman" font-size="10.2"/>
</defaults>
此查询失败...
运算符 'Like' 没有为类型 'System.Xml.Linq.XName' 和 'String' 定义。
我进行了网络搜索,没有找到 Linq to xml 和 Like 运算符。
好的,那么我怎样才能检索所有元素名称,如“*-Font”。
您似乎想使用 lw.Name.LocalName.EndsWith("-font")
,但您的 LINQ 查询具有 dc
和 lw
...,而且似乎无法编译。这是我认为您正在寻找的完整示例:
Dim xml =
<defaults>
<scaling>1</scaling>
<page-layout>2</page-layout>
<system-layout>3</system-layout>
<appearance>4</appearance>
<default-font font-family="Arial" font-size="20.4"/>
<word-font font-family="Times New Roman" font-size="10.2"/>
</defaults>
Dim categories =
From e In xml.Elements()
Let Id = e.Name.LocalName
Where Id.EndsWith("-font")
Let FontFamily = e.Attribute("font-family").Value
Let FontSize = e.Attribute("font-size").Value
Select Id, FontFamily, FontSize
这导致:
Id FontFamily FontSize
-- ---------- --------
default-font Arial 20.4
word-font Times New Roman 10.2
编辑
如 this question 所示,您可以使用 XML 文本作为带连字符的属性(我最初无法解决这个问题,因为 @font-family
不起作用):
Dim categories =
From e In xml.Elements()
Let Id = e.Name.LocalName
Where Id.EndsWith("-font")
Let FontFamily = e.@<font-family>
Let FontSize = e.@<font-size>
Select Id, FontFamily, FontSize
我需要检索像“*-Font”这样的元素名称,然后检索属性值。
这是使用的 linq...
Dim categories = From dc as xelement In Xml.DescendantsAndSelf("defaults") _
let Id = lw.name _
Where Id = "*-Font" _
let FontFamily = lw.attribute("font-family").value _
let FontSize = lw.attribute("font-size").value _
Select Id, FontFamily, FontSize
这是 xml 示例...
<defaults>
<scaling>1</scaling>
<page-layout>2</page-layout>
<system-layout>3</system-layout>
<appearance>4</appearance>
<default-font font-family="Arial" font-size="20.4"/>
<word-font font-family="Times New Roman" font-size="10.2"/>
</defaults>
此查询失败... 运算符 'Like' 没有为类型 'System.Xml.Linq.XName' 和 'String' 定义。
我进行了网络搜索,没有找到 Linq to xml 和 Like 运算符。
好的,那么我怎样才能检索所有元素名称,如“*-Font”。
您似乎想使用 lw.Name.LocalName.EndsWith("-font")
,但您的 LINQ 查询具有 dc
和 lw
...,而且似乎无法编译。这是我认为您正在寻找的完整示例:
Dim xml =
<defaults>
<scaling>1</scaling>
<page-layout>2</page-layout>
<system-layout>3</system-layout>
<appearance>4</appearance>
<default-font font-family="Arial" font-size="20.4"/>
<word-font font-family="Times New Roman" font-size="10.2"/>
</defaults>
Dim categories =
From e In xml.Elements()
Let Id = e.Name.LocalName
Where Id.EndsWith("-font")
Let FontFamily = e.Attribute("font-family").Value
Let FontSize = e.Attribute("font-size").Value
Select Id, FontFamily, FontSize
这导致:
Id FontFamily FontSize -- ---------- -------- default-font Arial 20.4 word-font Times New Roman 10.2
编辑
如 this question 所示,您可以使用 XML 文本作为带连字符的属性(我最初无法解决这个问题,因为 @font-family
不起作用):
Dim categories =
From e In xml.Elements()
Let Id = e.Name.LocalName
Where Id.EndsWith("-font")
Let FontFamily = e.@<font-family>
Let FontSize = e.@<font-size>
Select Id, FontFamily, FontSize