Vamos a empezar filtrando elementos únicos de un array:
Dim arr() As Integer = {11, 22, 22, 33, 33, 44, 44, 55, 55, 66, 66, 77, 77, 88, 99} Dim Uniques = arr.Distinct() Response.Write("<strong>Filtrando elementos DISTINCT de un array mediante Linq</strong>") For Each unique In Uniques Response.Write(String.Format("<br />{0}", unique)) Next
Como ven, he creado un array de elementos, algunos repetidos, con la intención de demostrar la facilidad con la que Linq filtra elementos únicos.
Continuemos. Ahora, vamos a crear una colección de objetos… en este caso una colección de elementos ListItem y luego filtramos los elementos únicos:
Dim Lis As New List(Of ListItem) Lis.Add(New ListItem("Texto 11", 11)) Lis.Add(New ListItem("Texto 22", 22)) Lis.Add(New ListItem("Texto 22", 22)) Lis.Add(New ListItem("Texto 33", 33)) Lis.Add(New ListItem("Texto 33", 33)) Lis.Add(New ListItem("Texto 11", 44)) Lis.Add(New ListItem("Texto 11", 44)) Lis.Add(New ListItem("Texto 22", 55)) Lis.Add(New ListItem("Texto 22", 55)) Lis.Add(New ListItem("Texto 66", 66)) Lis.Add(New ListItem("Texto 66", 66)) Lis.Add(New ListItem("Texto 77", 77)) Lis.Add(New ListItem("Texto 77", 77)) Lis.Add(New ListItem("Texto 88", 88)) Lis.Add(New ListItem("Texto 99", 99)) Dim FiltroxUnaPropiedad = (From li In Lis Select li.Text).Distinct() Response.Write("<strong>Filtrando elementos DISTINCT de una colección de objetos mediante Linq (filtro x 1 campo)</strong>") For Each str As String In FiltroxUnaPropiedad Response.Write(String.Format("<br />{0}", str)) NextLo que estamos haciendo es buscar elementos únicos, pero teniendo en cuenta sólo la propiedad Text de cada ListItem.
En el siguiente caso, buscaremos elementos únicos pero teniendo en cuenta dos propiedades: Text y Value:
Dim FiltroxVariasPropiedades As List(Of ListItem) = (From li In Lis Select New ListItem(li.Text, li.Value)).Distinct().ToList Response.Write("<strong>Filtrando objetos DISTINCT de una colección de objetos mediante Linq (filtro x varios campos)</strong>") For Each q As ListItem In FiltroxVariasPropiedades Response.Write(String.Format("<br />{0}", q.Text)) Next
Y finalmente vamos a buscar elementos distintos de un datatable:
Dim dt As New DataTable 'aquí le agregas los elementos a tu datatable Dim Elementos = (From Fila In dt.AsEnumerable Select Fila("CategoryID")).Distinct() Response.Write("<strong>Filtrando elementos DISTINCT de un datatable mediante Linq</strong>") For Each Elemento As Integer In Elementos Response.Write(String.Format("<br />{0}", Elemento)) Next
Espero que les sea de utilidad ;)
No hay comentarios.:
Publicar un comentario