как получить уникальные элементы? - PullRequest
0 голосов
/ 12 июня 2009
<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>

Я хотел бы получить уникальные журналы, поэтому из этого списка я хочу извлечь только 7190, 7192 и 7193. У меня есть скрипт, который помещает его в выпадающий список с помощью:

DropDownList1.DataSource = dv
        DropDownList1.DataBind()

но мне нужно, чтобы получить только уникальные значения.

Ответы [ 3 ]

2 голосов
/ 12 июня 2009

Посмотрите на LINQ to XML! Благодаря этому у вас есть возможность напрямую запрашивать блоб xml, но с меньшей головной болью, чем при использовании XPATH (который вы также можете использовать для выполнения той же задачи).

Тогда вы можете указать свой источник данных на результат запроса LINQ по вашему BLOB-объекту.

0 голосов
/ 12 июня 2009

LINQ - предпочтительный способ, я думаю, но другой вариант :

Dim newTable As DataTable = dataView.ToTable( True, "Category")
DropDownList1.DataSource = newTable 
DropDownList1.DataBind()
0 голосов
/ 12 июня 2009

Попробуйте следующее

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.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...