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" _ 

52939772 Comparar DataRows LINQ to DataSet

Embed Size (px)

Citation preview

Page 1: 52939772 Comparar DataRows LINQ to DataSet

5/11/2018 52939772 Comparar DataRows LINQ to DataSet - slidepdf.com

http://slidepdf.com/reader/full/52939772-comparar-datarows-linq-to-dataset 1/3

Comparar DataRows (LINQ to DataSet)Página de inicio Biblioteca AprenderDescargas Soporte técnico Comunidad Iniciar sesión Argentina - Español Preferencias

MSDN Library Herramientas y lenguajes de desarrollo Visual Studio 2008 VisualStudio 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 4Actualización: November 2007Language-Integrated Query (LINQ) define varios operadores de conjuntos paracomparar elementos de origen y ver si son iguales. LINQ proporciona lossiguientes operadores de conjuntos:

Distinct

UnionIntersectExcept

Estos operadores comparan elementos origen llamando a los métodos GetHashCode yEquals de cada colección de elementos. En el caso de DataRow, estos operadoresrealizan una comparación de referencia, lo que en general no constituye uncomportamiento ideal para operaciones de conjunto en datos tabulares. Para lasoperaciones de conjuntos, por lo general deseará determinar si los valores delelemento son iguales o no a las referencias del elemento. Por ello, se haagregado la clase DataRowComparer a LINQ to DataSet. Esta clase se puedeutilizar para comparar valores de fila.La clase DataRowComparer contiene una implementación de comparación del valorpara DataRow, de modo que esta clase se puede utilizar para operaciones de

conjuntos como Distinct. No se puede crear una instancia directamente de estaclase. En su lugar, debe utilizarse la propiedad Default para devolver unainstancia de DataRowComparer. Entonces, se llama al método Equals(DataRow,DataRow) y los dos objetos DataRow que se van a comparar se pasan comoparámetros de entrada. El método Equals(DataRow, DataRow) devuelve true si losconjuntos 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" _ 

Page 2: 52939772 Comparar DataRows LINQ to DataSet

5/11/2018 52939772 Comparar DataRows LINQ to DataSet - slidepdf.com

http://slidepdf.com/reader/full/52939772-comparar-datarows-linq-to-dataset 2/3

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 contactsConsole.WriteLine("Id: {0} {1} {2} {3}", _ 

row("ContactID"), row("Title"), row("FirstName"), row("LastName"))Next

EjemploEl 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.DefaultDim bEqual = comparer.Equals(left, right)

If (bEqual = True) ThenConsole.WriteLine("Two rows are equal")

ElseConsole.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

ConceptosCargar datos en DataSetReferenciaDataRowComparerOtros recursosEjemplos de LINQ to DataSetContenido 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 Avisolegal Comentarios Comentariosx Cuéntenos su experiencia... ¿La página se

Page 3: 52939772 Comparar DataRows LINQ to DataSet

5/11/2018 52939772 Comparar DataRows LINQ to DataSet - slidepdf.com

http://slidepdf.com/reader/full/52939772-comparar-datarows-linq-to-dataset 3/3

cargó rápidamente? Sí No ¿Le gusta el diseño de la página? Sí No ¿Cuán útiles este tema? Cuéntenos más Enter description here.