Está en la página 1de 3

Comparar DataRows (LINQ to DataSet)Página de inicio Biblioteca Aprender

Descargas Soporte técnico Comunidad Iniciar sesión | Argentina - Español |


Preferencias

MSDN Library Herramientas y lenguajes de desarrollo Visual Studio 2008 Visual


Studio Programación de .NET Framework en Visual Studio Obtener acceso a datos
ADO.NET LINQ to DataSet Guía de programación (LINQ to DataSet) Comparar DataRows
(LINQ to DataSet)
Contenido de la comunidad
Agregue ejemplos de código y sugerencias para mejorar este tema.
Más...
Comparar DataRows (LINQ to DataSet)
Visual Studio 2008 Otras versiones .NET Framework 4
Actualización: November 2007
Language-Integrated Query (LINQ) define varios operadores de conjuntos para
comparar elementos de origen y ver si son iguales. LINQ proporciona los
siguientes operadores de conjuntos:
Distinct
Union
Intersect
Except
Estos operadores comparan elementos origen llamando a los métodos GetHashCode y
Equals de cada colección de elementos. En el caso de DataRow, estos operadores
realizan una comparación de referencia, lo que en general no constituye un
comportamiento ideal para operaciones de conjunto en datos tabulares. Para las
operaciones de conjuntos, por lo general deseará determinar si los valores del
elemento son iguales o no a las referencias del elemento. Por ello, se ha
agregado la clase DataRowComparer a LINQ to DataSet. Esta clase se puede
utilizar para comparar valores de fila.
La clase DataRowComparer contiene una implementación de comparación del valor
para DataRow, de modo que esta clase se puede utilizar para operaciones de
conjuntos como Distinct. No se puede crear una instancia directamente de esta
clase. En su lugar, debe utilizarse la propiedad Default para devolver una
instancia de DataRowComparer. Entonces, se llama al método Equals(DataRow,
DataRow) y los dos objetos DataRow que se van a comparar se pasan como
parámetros de entrada. El método Equals(DataRow, DataRow) devuelve true si los
conjuntos ordenados de valores de columna de ambos objetos DataRow son iguales;
de lo contrario, devuelve false.
Ejemplo

Este ejemplo usa Intersect para devolver contactos que aparecen en ambas tablas.
VBC#C++F#JScriptCopiar' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)
Dim contactTable As DataTable = ds.Tables("Contact")
Dim query1 = _
From contact In contactTable.AsEnumerable() _
Where contact.Field(Of String)("Title") = "Ms." _
Select contact
Dim query2 = _
From contact In contactTable.AsEnumerable() _
Where contact.Field(Of String)("FirstName") = "Sandra" _
Select contact
Dim contacts1 = query1.CopyToDataTable()
Dim contacts2 = query2.CopyToDataTable()
Dim contacts = contacts1.AsEnumerable() _
.Intersect(contacts2.AsEnumerable(), DataRowComparer.Default)
Console.WriteLine("Intersect of employees tables")
For Each row In contacts
Console.WriteLine("Id: {0} {1} {2} {3}", _
row("ContactID"), row("Title"), row("FirstName"), row("LastName"))
Next

Ejemplo
El ejemplo siguiente compara dos filas y obtiene sus códigos hash.
VBC#C++F#JScriptCopiar' Fill the DataSet.
Dim ds As New DataSet()
ds.Locale = CultureInfo.InvariantCulture
' See the FillDataSet method in the Loading Data Into a DataSet topic.
FillDataSet(ds)
' Get two rows from the SalesOrderHeader table.
Dim table As DataTable = ds.Tables("SalesOrderHeader")
Dim left = table.Rows(0)
Dim right = table.Rows(1)
' Compare the two different rows.
Dim comparer As IEqualityComparer(Of DataRow) = DataRowComparer.Default
Dim bEqual = comparer.Equals(left, right)
If (bEqual = True) Then
Console.WriteLine("Two rows are equal")
Else
Console.WriteLine("Two rows are not equal")
End If
' Output the hash codes of the two rows.
Console.WriteLine("The hashcodes for the two rows are {0}, {1}", _
comparer.GetHashCode(left), _
comparer.GetHashCode(right))

Vea también

Conceptos
Cargar datos en DataSet
Referencia
DataRowComparer
Otros recursos
Ejemplos de LINQ to DataSet
Contenido de la comunidad Agregar Preguntas más frecuentes © 2011 Microsoft
Corporation. Reservados todos los derechos.Términos de uso | Marcas Registradas
| Privacidad | Administre su perfil | MSDN Flash en Español | Contacto | Aviso
legal | Comentarios Comentariosx Cuéntenos su experiencia... ¿La página se
cargó rápidamente? Sí No ¿Le gusta el diseño de la página? Sí No ¿Cuán útil
es este tema? Cuéntenos más Enter description here.

También podría gustarte