Qué es lo que no ves? la dll, la clase, el método, no funciona, la agrega pero no compila?
2009/7/6 Julio Szabo <[email protected]> > *Leonardo*, > > Hice lo que me dijiste y creo que es la solución adecuada al problema. > > Cree un proyecto en C# en VS2008 que hace el join entre los DataTables que > recibe por parámetro y devuelve el resultado en otro Datatable. > > Hasta aca todo de lujo, el problema es tengo el proyecto en VS2005 como te > había comentado anteriormente, agrego la referencia a la dll compilada en > VS2008 y no logro verla, tenes idea que puede ser? Digo, quizá haya que > agregar algo mas al proyecto en VS2005 para que pueda ver una dll en VS2008. > > > > > > Creo que sorteando este problemita, tengo solucionado el problema completo. > > > > > > Muchas gracias. > > Saludos, > > > > * * > > *Julio E. Szabo* > > Consultoría > > [email protected] <[email protected]> > > tel.: +54 (351) 423 7176 > > cel.: (+54 9) (351) (15) 5 556048 > > [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/> > > *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden > contener información confidencial de uso exclusivo del destinatario > indicado. Cualquier uso en desacuerdo con su propósito, difusión o > publicación, total o parcial, se encuentra prohibida. Si recibió este > mensaje por error, rogamos reenviarlo al emisor y destruir las copias > impresas o grabadas en su sistema.** * > > > > > > *De:* [email protected] [mailto:[email protected]] *En nombre de *Leonardo > Micheloni > *Enviado el:* Lunes, 06 de Julio de 2009 02:48 p.m. > > *Para:* [email protected] > *Asunto:* [puntonet] Realizar Join por codigo > > > > mmmno, necesitás 2008. El objeto result del ejemplo es un tipo anónimo que > se declara en el select, por eso tiene un var, si necesitás un datatable > deberías hacer select new datatabla(){inicilización}. > > Esto corre sobre .net 2.0 una vez compilado, al referencia necesaria es > System.Core y System.Data.DataExtensions, si creás un proyecto en vs2008 ya > tiene el assembly referenciado. > > Si no tenés VS2008 (el express sirve igual) no vas a poder hacerlo (en > realidad sí pero es más complicado) las opción que tenés es meter la lógica > del join en una dll creada con una versión express de vs2008 y llamarla de > 2005, eso funciona, sino directamente con vs2008 pro. O sea: > > -Te bajás VB.NET o C# 2008 express > > -Te armás una clase que reciba dos datatables y arme el join y devuelva una > colección tipada o un datatable depende de lo que necesites > > -La referencías desde VS2005 > > El truco es que VS2008 va a generar código de esa expresión que corre sobre > .net 2.0 y por eso te va a funcionar, sino fijate el ejemplo que te pasé > recién como queda descompilado > > Private Shared Sub Main(ByVal args As String()) > Dim dt1 As New DataTable > Dim dt2 As New DataTable > Dim result = dt1.AsEnumerable().Join(Of DataRow, DataRow, Object, > <>f__AnonymousType0(Of String, Integer))(dt2.AsEnumerable(), Function (ByVal > d As DataRow) > Return d.Item("columna") > End Function, Function (ByVal d2 As DataRow) > Return d2.Item("columna") > End Function, Function (ByVal d As DataRow, ByVal d2 As DataRow) > Return New { _ > .Valor1 = d.Item("valor").ToString, _ > .Criterio = Integer.Parse(d.Item("columna").ToString) _ > } > End Function) > End Sub > > > como verás es código de 2.0 (el compilador crea delagados y tipos anónimos) > los métodos Join y demás están definidos en System.Core y en > System.Data.DataExtensions. Si te complica mucho te recomiendo otra opción. > Si no cualquier cosa chiflá > > saludos, Leonardo. > > > > 2009/7/6 Julio Szabo <[email protected]> > > *Leonardo*, te paso algunas dudas que tengo al respecto: > > 1. El proyecto donde tengo el Acceso a los Datos esta en VS2005 y en > VB, esto funciona allí ? Ya sé que tengo que convertir el código que me > pasaste de C# a VB. > > 2. El objeto “result”, es un DataTable con el resultado del Join? > > 3. Tengo que instalar algo? Cuales son las referencias que tengo que > agregar al proyecto y cuales son los using o Imports que tengo que agragar > en la clase para que funcione el código que me pasate. > > > > Muchas gracias. > > Saludos, > > > > > > * * > > *Julio E. Szabo* > > Consultoría > > [email protected] <[email protected]> > > tel.: +54 (351) 423 7176 > > cel.: (+54 9) (351) (15) 5 556048 > > [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/> > > *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden > contener información confidencial de uso exclusivo del destinatario > indicado. Cualquier uso en desacuerdo con su propósito, difusión o > publicación, total o parcial, se encuentra prohibida. Si recibió este > mensaje por error, rogamos reenviarlo al emisor y destruir las copias > impresas o grabadas en su sistema.** * > > > > > > *De:* [email protected] [mailto:[email protected]] *En nombre de *Leonardo > Micheloni > *Enviado el:* Lunes, 06 de Julio de 2009 12:09 p.m. > > > *Para:* [email protected] > *Asunto:* [puntonet] Realizar Join por codigo > > > > primero los datatables tiene un método que se llama AsEnumerable, es la > clave, después armás el join > > var dt1 = new DataTable(); > > var dt2 = new DataTable(); > > > var result = from d in dt1.AsEnumerable() > join d2 in dt2.AsEnumerable() > on d["columna"] equals d2["columna"] > select new {Valor1 = d["valor"].ToString(), Criterio = > int.Parse(d["columna"].ToString())}; > > algo así, cualquier cosa avisame. > > saludos, Leonardo. > > > > 2009/7/6 Julio Szabo <[email protected]> > > Podría ser una opción, pero no tengo idea como hacerlo, estuve investigando > un poco de linq, pero tengo, como para variar en cualquier proyecto, tengo > una restricción de tiempos en mi cronograma y no tengo mucho tiempo para > ponerme a investigar y hacer pruebas. > > > > Si me podes pasar algún ejemplo de cómo sería esto con linq, te agradecería > mucho. > > > > Saludos, > > > > * * > > *Julio E. Szabo* > > Consultoría > > [email protected] <[email protected]> > > tel.: +54 (351) 423 7176 > > cel.: (+54 9) (351) (15) 5 556048 > > [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/> > > *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden > contener información confidencial de uso exclusivo del destinatario > indicado. Cualquier uso en desacuerdo con su propósito, difusión o > publicación, total o parcial, se encuentra prohibida. Si recibió este > mensaje por error, rogamos reenviarlo al emisor y destruir las copias > impresas o grabadas en su sistema.** * > > > > > > *De:* [email protected] [mailto:[email protected]] *En nombre de *Leonardo > Micheloni > *Enviado el:* Lunes, 06 de Julio de 2009 11:23 a.m. > *Para:* [email protected] > *Asunto:* [puntonet] Realizar Join por codigo > > > > linq? > > 2009/7/6 Julio Szabo <[email protected]> > > Buenos días a todos, > > Les escribo porque tengo un problema que no sé cómo y quizá alguien me > pueda dar una mano. > > Tengo 2 Datatables, oDt1 que viene con datos de una Base de datos y oDt2 > que viene con Datos de un Web Service, ahora bien, como puedo hacer para > hacer un join entre estos dos DataTables??? > > He intentado hacerlo con Relations en un DataSet, pero el problema es que > necesito que el join filtre información, es decir, tengo el siguiente > problema, oDt1 y oDt2, lo que necesito es obtener, oDtResultado: > > > > oDt1 > oDt2 oDtResultado > > ------ > -------------------------- ------------------------- > > 101 106 > Descripcion1 106 Descripcion1 > > 102 108 Descripcion2 > > 103 109 Descripcion3 > > 104 > > 106 > > 110 > > 121 > > > > Y con DataSets, todos los ítems tienen que tener correspondencia en la > relación, que no es mi caso. > > Ya sé que una solución sería recorrer oDt2 y fijarme que no esté en oDt1, > pero quiero saber si lo puedo hacer por algo que sea más rápido o de mejor > performance, ya que este factor es crítico. > > > > Desde ya muchas gracias. > > Saludos, > > * * > > *Julio E. Szabo* > > Consultoría > > [email protected] <[email protected]> > > tel.: +54 (351) 423 7176 > > cel.: (+54 9) (351) (15) 5 556048 > > [image: Compañía de Tecnologías Latinoamericana]<http://www.ctlcorp.com.ar/> > > *AVISO: El presente mensaje y los archivos adjuntos que incluya pueden > contener información confidencial de uso exclusivo del destinatario > indicado. Cualquier uso en desacuerdo con su propósito, difusión o > publicación, total o parcial, se encuentra prohibida. Si recibió este > mensaje por error, rogamos reenviarlo al emisor y destruir las copias > impresas o grabadas en su sistema.** * > > > > > > > > > > >
<<image001.gif>>
