last day (15 days later) » 
12:00 - 14:0014:00 - 18:00

12:25
Hola :)
entonces, por donde empezamos? jaja
Aprender lo que es IEnumerable<T>
IEnumerable<T> es el tipo del que derivan practicamente tooodas las colecciones genéricas en C# y es la base de System.Linq (Digo yo, porque hace bastantes operaciones en enumerables)
En ese trocito de código, ¿de donde sale n?
var MenoresQue10 = Numeros.Where( n => n < 10).ToList();
@Aritzbn n => n < 10 será
Recuerdas lo de Task.Run(() => Metodo())?
Fijate en el operador lambda (=>)
Si, recuerdo eso
^^^
Es una lambda igual, el tipo del argumento n es deducido de las operaciones (afaik)
12:31
uhm....
el tipo entiendo que es como si estuvieras haciendo algo tipo
var n = (n< 10).ToList(); ?
@Aritzbn Nope
Uhm entonces, no entiendo bien que valor o que tipo está tomando n
@Aritzbn El valor de n se asigna internamente en la funcion Where de Linq
Entonces, n es la colección de números?
@Aritzbn Nope, un numero en especial
Considera que lo de Linq, funciona practicamente igual a sql
12:35
@NaCl cada uno de los números de Numeros puede ser?
@Aritzbn Exacto
Vale, eso si lo entiendo
@Aritzbn Al hacer Numeros.Where(n => n < 10).ToList();
Su posible equivalente en SQL seria: select Id from Numeros where Id < 10
Donde Id seria la columna que tiene los numeros, es decir, tu "Data Source" de la tabla Numeros
A ver si estoy en lo correcto:
En esa línea lo que pasa sería que n toma cada uno de los números de la colección y compara si son menores que 10 y cuando termina los pasa a una lista
No se si me explico
@Aritzbn Exactamente
Una implementacion vaga de Where:
12:38
Entendido
Puedo hacer comparaciones de cualquier tipo con ello?
Sep
Siempre que la firma de la función lo permita
firma de la función?
@Aritzbn Si, hay funciones de Linq que no permiten que uses mas de un argumento en tu lambda
@NaCl entiendo que puedo hacer un where simple con Linq... pero ¿Que cosas un poco más complejas me permite hacer?
@Aritzbn De todo.
Mira una implementación simple de IEnumerable<T>.Where a ver si me sale :^)
12:43
@NaCl ?¿
Sigo sin entender como podría aplicar esto a mi código xd
@Aritzbn Ya veras
Ahora si
Puedes postear el link de tu pregunta aquí?
Ahora si el que? xd
7
Q: ¿Algoritmo de búsqueda para este formato?

Aritzbnpongamos que tengo un array bidimensional de este estilo. Este representa un formato de excel o de lo que quiera que sea. El programa lo he escrito en C# por facilidad, pero me vale un pseudocódigo, un algoritmo para hacerlo, un ejemplo en algún otro lenguaje similar... Aunque lo ideal sería el...

Es que estaba algo ocupado y estar en ambos chats es algo raro xD
Oh, si, no te preocupes jaja
@Aritzbn Vale, utilizando LINQ, tendrías un par de POCOs (Objetos de C#)
12:46
Me gustaría ser capaz de hacer consultas linq por mi cuenta xd por que ahora, solo sabría imitar lo que me has enseñado
@Aritzbn Bueno, mira detenidamente
Tienes una clase Producto {}
Producto {
  public int Id { get; set; }
  public string Marca { get; set; }
  public string Descripcion { get; set; }
  public int EnStock { get; set; }
}
sin id (?) xd pero bueno
Y tu DataSource es un IList<Producto> Productos; en tu capa de datos
12:48
Vale, si, eso lo entiendo
Si quieres actualizar el EnStock de todos los productos de la marca Adidas, digamos que quieres ponerlo en 10 cada producto de esa marca
Haces un query algo como: var ProductosAdidas = Productos.Where(p => p.Marca == "Adidas").ToList();
la operación lambda lo que hace es asignar la expresión continua a p en este caso?
Al igual que cuando tu haces Task.Run(() => Metodo() ) dices que quieres ejecutar el metodo sin pasarle argumentos?
@Aritzbn En ese ejemplo, no se si Task.Run acepte una lambda con argumentos
Pero es posible
2 mins ago, by NaCl
Haces un query algo como: var ProductosAdidas = Productos.Where(p => p.Marca == "Adidas").ToList();
Luego de hacer ese query, simplemente haces un foreach de tu resultado de datos y asignas los valores
Con esto solo obtengo todos los productos de Adidas
verdad?
@Aritzbn Correcto
Mira el fiddle
Fijate en la cantidad antes y despues
12:57
Vale, con esto puedo cambiar el Stock de Adidas
@Aritzbn No lo veas como que "con esto puedo cambiar el stock de ..."
Puedes tener distintos criterios de busqueda
Entiendo que es más sencillo y más legibles
Pues claro
Entonces, asumiendo que tienes tu Data source preparado (Usando EF o llenando manualmente desde DataReader)
Como podría hacer por ejemplo... si quiero que sean los zapatos de Adidas?
bueno no es el caso
uhm.... bueno si
quiero cambiar el stock de solo los zapatos
son dos argumentos, "Adidas" y "Zapatos"
@Aritzbn Entonces necesitas hacer una cosilla
Diseñar tu base de datos
13:00
Sobre la lista de productos que tenemos
Si?
Linq no me permite hacer algo como (esto estará mal)
var Adidas = Productos.Where(p => p.Marca == "Adidas" && p.Producto == "Zapatos").ToList();
p en este caso toma Productos, verdad?
@Aritzbn Claro que si
Si la clase Producto tiene un campo llamado Producto
Que no seria buena idea, va a tomar el campo sin problema
Espera
que no vi eso
tu tienes descripcion
var Adidas = Productos.Where(p => p.Marca == "Adidas" && p.Producto == "Zapatos%").ToList();
Así
@Aritzbn Deja te actualizo el fiddle :P
13:04
o podría hacer p.Descripción.Contains("Zapatos")?
@Aritzbn En este caso seria Descripcion
Si, puedes hacerlo
Bueno ignora la tilde xd
Vale, lo he conseguido
entonces linq, me sirve para usar where? ¿Puedo hacer algo más?
@Aritzbn El where es lo mas basico :)
13:07
¿Que más puedo hacer?
Pero puedes hacer Join y todo un mundo de cosas
Seleccionar datos si existen
Puedo meter en una linq un array[,]?
@Aritzbn Depende del o que quieras hacer
@Aritzbn Explica tu problema
Uhm dejame buscar las palabras xd y ejemplos
por que realmente, la pregunta que he hecho es un problema que tengo solucionado de una forma distinta, pero buscaba una forma de hacerlo mejor
Aún así, no creo que las Linq sirvan para nada para resolver mi problema de búsqueda
De alguna forma, necesitas organizar tus datos de forma que puedas hacer consultas sobre campos relacionados
13:10
Los datos los tengo, pero el problema está en ubicarlos de la SQL query al array
¿Me sirve la consulta Linq para encontrar la fila y columna correspondiente?
@Aritzbn Estas utilizando un array para guardar datos de sql o que?
Recibo los datos por sql y tengo que injectarlos en el array
@Aritzbn Y de que es el array?
el array es una representación de excel
String
Y la busqueda es en el array de string?
13:12
Has visto la estructura de datos que tengo en la pregunta?
8
Q: ¿Algoritmo de búsqueda para este formato?

Aritzbnpongamos que tengo un array bidimensional de este estilo. Este representa un formato de excel o de lo que quiera que sea. El programa lo he escrito en C# por facilidad, pero me vale un pseudocódigo, un algoritmo para hacerlo, un ejemplo en algún otro lenguaje similar... Aunque lo ideal sería el...

Buenos días a todos
Buenos días
@PedroÁvila Buenas :^)
Class Producto(){
    public String marca;
    public String producto;
    public int stock;
}
@NaCl Mi hermano buenos días
Esa? ^^^
13:13
me refero a
+—————————————+———————————+
| | STOCK |
+—————————————+———————————+
| Adidas | |
+—————————————+———————————+
| Camisetas | 52 |
+—————————————+———————————+
| Pantalones | 37 |
+—————————————+———————————+
| Zapatillas | 15 |
+—————————————+———————————+
| Puma | |
+—————————————+———————————+
| Camisetas | 55 |
+—————————————+———————————+
| Pantalones | 73 |
+—————————————+———————————+
| Zapatillas | 61 |
ups xd
ahí es donde tengo que buscar la fila y la columna
@Aritzbn Eso es una tabla de datos xD
Creo que estaba mezclando conceptos XD
Estructura, tabla... que más dará xd
@Aritzbn ¿Y cómo obtienes esos datos?
Me confundí de sala
Jejeje
@PedroÁvila Hahaha
13:15
Jejeje
No entiendo de donde salen esos datos que te obligan a tener un array de dos dimensiones :(
Consulta SQL > Dr.Read() > creo objetos de la clase Producto > añado objetos a List<Productos> > Recorro lista{ Recorro array[i] { Recorro array[j { aquí está el problema, necesito indices i j correspondientes a cada producto para reflejar el stock en un excel } } cuando encuentro i y j inserto , array [i,j] = Productos.stock
Esos datos vienen de una consulta SQL , yo los estructuro en los objetos y posteriormente en la lista para una mayor facilidad a la hora de tratarlos
Espera espera espera
4 mins ago, by Aritzbn
me refero a
+—————————————+———————————+
| | STOCK |
+—————————————+———————————+
| Adidas | |
+—————————————+———————————+
| Camisetas | 52 |
+—————————————+———————————+
| Pantalones | 37 |
+—————————————+———————————+
| Zapatillas | 15 |
+—————————————+———————————+
| Puma | |
+—————————————+———————————+
| Camisetas | 55 |
+—————————————+———————————+
| Pantalones | 73 |
+—————————————+———————————+
| Zapatillas | 61 |
Esos datos ^^^ vienen de SQL?
Y por qué estan como string[,]?
13:18
Convert.ToString()
Haces trabajo de más...
¿Por qué no usas una clase que tenga esos campos?
Hago trabajo de menos xd creeme, el excel es.... bueno es un caos
tiene fechas, numeros, textos
es más fácil mapear el excel al array como string
Pero si esas celdas no se cambian
excel[i,j].Contains
@NaCl esas celdas ahora no cambian, pero si el mes que viene quieren meter una marca nueva, será distinta
@Aritzbn Si los datos estan en un Excel, entonces la cosa cambia
13:20
Tal y como tengo el código me insertará el código me inserta siempre en el final, es decir, si son unas zapatillas, independientemente de la marca, siempre me los inserta al final, en la parte de Nike, si son unos pantalones, siempre me los inserta en la parte de Puma.
Que usas para leer el excel?
Interop
@Aritzbn Interop para escribir igual?
Vale
Cuando insertas un numero en la parte de stock
Te inserta los datos en la parte de puma?
Siempre
13:22
Realmente en el problema lo he puesto como array[,] pero en mi programa lo tengo como Excel.Cells[i,j] y eso
Algo así , ahora no recuerdo, pero para poner ejemplos siempre es más facil con un String[,] matriz
@NaCl todos los productos de adidas me los inserta en puma, por ejemplo, a no ser que sean zapatillas, que van a Nike
@Aritzbn Esto será dificil sin un mejor mcve
En mi aplicacion soluciono esto haciendo un break, pero he puesto esto esperando que alguien me diera un algoritmo de búsqueda más rápido
Creo que voy a acabar creando un fiddle ... xd
@Aritzbn El problema principal es que no tenemos forma de entender el background de tu pregunta
Si fuera un caso genérico, no es problema
@NaCl yo veo el problema bastante generico
Sin embargo, estas utilizando Interop y solo escribes al excel
13:25
excel al final es un [,]
Lo que he entendido de la pregunta y lo que me dices aqui
Es que Recibes desde SQL para escribir un excel
Y que tienes un algoritmo de busqueda ineficiente
Si, bueno un excel, un array [,] es lo mismo realmente
Tengo un algoritmo de busqueda ineficiente PARA colocar los datos en su respectivo lugar
Las celdas son especificas en tu excel resultante?
@Aritzbn Entonces es como dices, no es de busqueda, es inserción :P
Pero .... al final lo que estoy haciendo es "buscar el lugar donde tengo que insertarlo"
mierda, inserción xD
@Aritzbn Tu problema es buscar donde se inserta el valor?
13:30
Si
El excel es alguna plantilla?
el excel es una plantilla
@Aritzbn Haberlo dicho desde el inicio hombre!
pero no quería que la gente me dijera, ah pues cambia el excel, ah pues noseque, intenté ser muy concreto xD
por que la gente siempre dice cosas que bueno... pero creo que la líe
Jajajaja
Para ello necesitariamos un ejemplo del excel, porque utilizando Worksheet.Cells[r, c]
Tienes que hacer magia practicamente
13:32
Lo sé
Pero no
La parte de Linq la sugerí porque es/era tu mejor opción para obtener los datos desde SQL
No necesito mucho más a parte de lo que muestro en la pregunta
Pero para usar Linq con tus datos en SQL, tienes que usar EF, hasta donde yo se
9
Q: ¿Algoritmo de búsqueda para este formato?

Aritzbnpongamos que tengo un array bidimensional de este estilo. Este representa una plantilla de excel o de lo que quiera que sea. La intención de la tabla de datos es que se asemeje a la plantilla de excel donde tengo que insertar los datos. El problema principal es encontrar el lugar en el...

A ver si ahora se entiende.
Si, inicialmente era para aprender Linq, pero se tornó en el titulo... "En busqueda del problema de Aritzbn"
13:42
He editado de nuevo la pregunta para añadir más información :$
Vale, vale!
¿No se le puede cambiar el nombre a la salA?
@Aritzbn Tu eres el que la hizo xD
room topic changed to Buscando algoritmo de busqueda array bidimensional: (no tags)
Uish, no sé si así es más acorde
El excel no lo creo yo, lo descargo de un correo y el "cliente" es quien lo genera como a el le da la gana, generalmente siempre es el mismo, pero puede que un día quiera cambiar el formato o lo que fuera. — Aritzbn 2 hours ago
13:43
room topic changed to Buscando algoritmo de busqueda array bidimensional: es.stackoverflow.com/questions/156574/… (no tags)
En serio es el cliente que hace el excel?
@NaCl el "cliente" en este caso es mi jefe, que envía el Excel a un cliente, que es una empresa X
@Aritzbn Y lo hace cuando se le pegue la gana?
Y esta empresa puede pedirle un día, quiero que también metas la Marca X
Marca es departamento de nombre X
y bueno censura
"Departamento"
"Delegacion"
Me lo invento un poco
Rayos
13:49
JUA
chicos...
Son un poco, cosas confidenciales y no quiero dar mucha información jaja
Como ves Gonzalo?
el problema es haber hecho una lista de objetos
¿Por qué?
si es un array bidimensional no puede ser nunca una lista de objetos..
primero, con un diccionario es mucho mas rapido...
y con un diccionario de un diccionario vuela...
13:50
O_O
le pasas las busquedas por key.. te olvidas de todos los problemas...
El problema no creo que sea el tema de la lista, sino las dimensiones del Excel
@gbianchi Leiste arriba?
El excel no es generado, es hecho a mano por un tercero
Y tiene que adivinar donde poner los datos O_O
en el excel? o en la lista?
En el excel
13:51
y donde esta todo el codigo de guardado en el excel?
@gbianchi El recibe datos de SQL, para guardarlos en ese excel
@gbianchi No lo veo necesario
Que cosa ni más macabra ...
el array bidimensional es una representación de la hoja de Excel
La intención de la tabla de datos es que se asemeje a la plantilla de excel donde tengo que insertar los datos.

El problema principal es encontrar el lugar en el array bidimensional donde tengo que insertar cada dato.
@Aritzbn cortes de control?
13:52
¿Cortes de control?
ese problema se llama asi.. y tiene mas años que mi hijo.. jajajaja
claro.. vos recorres los elementos de a uno, hasta que encontras la posicion que buscas.. ahi seguis buscando, pero cuando la posicion cambia (la marca), sabes que tenes que insertar lo que querias antes que eso..
sin embargo.. con un diccionario, solucionas todo esto rapidamente.. y despues tu unico problema es bajarlo al excel..
Uhm... es una lista de 3 objetos, necesitaría la lista si o si , no? no entiendo
o sea.. a ver.. vos estas tratando de armar el excel en memoria sin aprovecharte del lenguaje que estas usando.. y tendrias que ser al reves.. hacer todo lo mejor que puedas, y despues solo preocuparte por mostrarlo...
Uhm.... bueno... en parte tienes razón pero en recorrer toda la lista que tengo tratando los datos que necesito para hacer conversiones y blablabla, tardo apenas 25 segundos , no creo que la lista me esté dando ningún problema de tiempo
Teniendo en cuenta que la extracción de datos de SQL depende del día puede llegar hasta tardar 4-5-6 minutos...
@Aritzbn O_O?
Tienes 1000000+ datos, no?
13:57
ahm....
@NaCl hago un select * y te digo xd
Eso es local o tienen un servidor de bases de datos?
@NaCl tienen un ""Servidor"" o más bien un PC con dos GB de ram, windows 7 donde está PHPMyadmin / MySQL ... (WAMP)
@Aritzbn No se diga mas, pero no creo que tome 4 minutos una consulta a eso...
@Aritzbn wow.. cuantos millones de datos tenes?
3097719
13:59
y si tenes tantos datos.. las estructuras en memoria van a ser eternas..
12:00 - 14:0014:00 - 18:00

last day (15 days later) »