如何获得独特的元素?

时间:2009-06-12 19:02:06

标签: asp.net xml vb.net

<data>
<food>
<id>1</id>
<name>asparagus</name>
<catlog>7190</catlog>
</food>
<food>
<id>2</id>
<name>almonds</name>
<catlog>7190</catlog>
</food>
<food>
<id>3</id>
<name>asparagus</name>
<catlog>7192</catlog>
</food>
<food>
<id>4</id>
<name>asparagus</name>
<catlog>7193</catlog>
</food>
</data>

我想获得独特的catlogs,所以从这个列表中我只想提取7190,7192和7193.我有一个脚本,通过使用它将其放入下拉列表:

DropDownList1.DataSource = dv
        DropDownList1.DataBind()

但我需要它才能获得唯一的值。

3 个答案:

答案 0 :(得分:2)

看看LINQ to XML!有了这个,你就可以直接查询一个xml的blob,但比使用XPATH(你也可以用来做同样的任务)更少头痛。

然后,您可以将数据源指向来自XML blob的LINQ查询的结果。

答案 1 :(得分:0)

尝试以下

Public Function Unique(ByVal doc As XDocument) As IEnumerable(Of String)
  Return doc...<catalog>.Select(Function(x) CType(x,Integer)).Distinct()
End Function

快速注意:CType最初可能看起来很奇怪,但它确实有效,因为XElement类为许多值类型(包括Integer)定义了显式转换运算符。

答案 2 :(得分:0)

option是:

Dim newTable As DataTable = dataView.ToTable( True, "Category")
DropDownList1.DataSource = newTable 
DropDownList1.DataBind()