Nuevo en C# (nuevisimo)

05/09/2007 - 18:10 por Heberto Villavicencio | Informe spam
Saludos, soy un programador de VFP que esta tratando de migrar a .net
especificamente c# y la verdad no es nada facil, estaba revisando un codigo
que consegui por alli el cual esta escrito en c# y en VFP pero me surge una
duda que quizas me puedan ayudar:

en la instruccion:

from word in WordArray
where word.Length > 0 && System.Char.IsLetter(word[0])

group word by word into gr

orderby gr.Count() descending

select new { dd = gr.Count(),gr.Key};



Quien rayos es " word " es decir en todo el codigo no veo una referencia
anterior a el es decir, donde se crea es una clase un objeto una variable,
pareciere un objeto ya que tiene la propiedad lenght, pero no veo donde se
crea o de donde viene. Gracias por su ayuda:



Codigo completo:



using System;

using System.Collections.Generic;

using System.ComponentModel;

using System.Data;

using System.Drawing;

using System.Linq;

using System.Text;

using System.Windows.Forms;

using System.IO;



namespace WindowsFormsApplication1

{

public partial class Form1 : Form

{

public Form1()

{

InitializeComponent();

}



private void Form1_Load(object sender, EventArgs e)

{

this.Width = 1024;

this.Height = 768;

var q
from FileName in Directory.GetFiles(

"D:\\dd\\VB03_s2\\src\\vb\\bc\\", "*.*",

SearchOption.AllDirectories)

let ext = Path.GetExtension(FileName).ToLower()

where ext == ".cpp" || ext == ".h"

let LineArray = File.ReadAllText(FileName).Split(new char[]
{ '', '' })

from SingleLine in LineArray

let WordArray = SingleLine.Split(

new char[] { ' ', '\t', '*', ',', '.', '(', ')',
'<', '>', ':',';', '\'', '"' }

).TakeWhile(w => w != "//")

from word in WordArray

where word.Length > 0 && System.Char.IsLetter(word[0])

group word by word into gr

orderby gr.Count() descending

select new { dd = gr.Count(),gr.Key};



Browse(q);

}

private void Browse<T>(IEnumerable<T> seq)

{

var Gridview = new DataGridView();

Gridview.Width = this.Width;

Gridview.Height = this.Height;

this.Controls.Add(Gridview);

var p1 = new List<T>(seq);

Gridview.DataSource = p1;

this.Text = p1.Count.ToString();

Gridview.Dock = DockStyle.Fill;

Gridview.AutoResizeColumns();





}

}

}

Preguntas similare

Leer las respuestas

#11 Alfredo Novoa
07/09/2007 - 15:18 | Informe spam
On Fri, 7 Sep 2007 08:55:20 +0200, "Juan Diego Bueno"
wrote:

Yo sinceramente, no veo tanto problema en hacer el select al revés, vamos,
es tan sencillo como convertir una oración de activa a pasiva (yo diría que
más sencillo aún, porque no tienes que cambiar nada, sino sólo invertir).



Es que en realidad está bastante mejor así. Si quieres proyectar una
expresión relacional sobre un conjunto de atributos, es más lógico
poner primero la expresión y después la lista de atributos. Igual que
para dividir un número entre dos ponemos primero el número que
queremos dividir y luego el dos.


Saludos
Respuesta Responder a este mensaje
#12 Alfredo Novoa
07/09/2007 - 15:30 | Informe spam
On Fri, 7 Sep 2007 07:27:51 -0400, "Alfredo Crisostomo"
wrote:

Por mi parte yo entiendo lo que dices pero interpretando a principiante creo
que si lo iban a poner al reves, no debieron usar palabras tan conocidas
como Select..From.. Que necesidad habia de eso?



Es cierto, sobre todo en el caso del from. No sirve absolutamente para
nada. No es más que ruido.

El "select" de LINQ sirve para "desambiguar" la sintaxis, pero la
palabra está mal escogida por que lo que realmente hace es proyectar.
Sería mucho más lógico poner "project" o incluso "over".

Incluso ellos mismos se dan cuenta de que lo que hace el "select" es
proyectar y no seleccionar:

http://msdn2.microsoft.com/en-us/vc...36758.aspx

Y en el caso en el que queramos todos los atributos no habría que
poner nada por que sería una proyección que no proyecta nada.

LinQ es un trabajo de aficionados :-)


Saludos
Respuesta Responder a este mensaje
#13 Rafael
08/09/2007 - 21:04 | Informe spam
especificamente c# y la verdad no es nada facil, estaba revisando un
codigo que consegui por alli el cual esta escrito en c# y en VFP pero me
surge una duda que quizas me puedan ayudar:




C# lo encontramos dificil yo pienso que es principalmente por su sintaxis
tan poco intuitiva en comparacion con VFP y el antiguo VB por solo citar
otros dos lenguajes. Ejemplo la definicion de genericos y listas, que cosa
tan complicada de leer!!!. Y en vez de mejorar parece que en la proxima
version eso seguira igual o peor por lo que he ido viendo con eso de LINq y
expresiones lambda.

Uno pierde mas tiempo acostumbrandose e interpretando la sintaxis que
programando propiamente.

No se si piensen igual que yo pero hay que conocer otros tipos de lenguajes
para darse cuenta.


Rafa
Respuesta Responder a este mensaje
#14 Juan Diego Bueno
09/09/2007 - 03:28 | Informe spam

C# lo encontramos dificil yo pienso que es principalmente por su sintaxis
tan poco intuitiva en comparacion con VFP y el antiguo VB por solo citar
otros dos lenguajes. Ejemplo la definicion de genericos y listas, que
cosa tan complicada de leer!!!. Y en vez de mejorar parece que en la
proxima version eso seguira igual o peor por lo que he ido viendo con eso
de LINq y expresiones lambda.



C# está como tantos y tantos lenguajes existentes, basado en C, por lo
tanto, su dificultad en la sintaxis es similar a este lenguaje (más sencilla
aún, incluso) y muy parecida a otros más extendidos como Java. Si se ha
migrado de Foxpro y no gusta la sintaxis de C#, está VB que es basado en
Basic y siempre ha sido un lenguaje más sencillo de leer (aunque
personalmente a mi me gustan más los basados en C). Es por ello que no debe
compararse con VFP o VB, puesto que son totalmente diferentes y porque
también se pueden seguir usando lenguajes que si se parecen más a esa
sintaxis.

Y respecto a LinQ y las expresiones lambda... es tan simple como que si no
se entiende, no se use. Si hasta ahora se han podido hacer las cosas con más
o menos dificultad con los lenguajes actuales, se van a poder seguir
haciendo en el futuro, haya o no novedades. Si supone un esfuerzo grande
tener que aprender novedades de un lenguaje, pues no se aprenden y se sigue
usando lo que ha habido de siempre, es así de sencillo.

Saludos
Respuesta Responder a este mensaje
#15 Rafael
09/09/2007 - 05:45 | Informe spam
migrado de Foxpro y no gusta la sintaxis de C#, está VB que es basado en
Basic y siempre ha sido un lenguaje más sencillo de leer (aunque
personalmente a mi me gustan más los basados en C). Es por ello que no
debe compararse con VFP o VB, puesto que son totalmente diferentes



Uno lo compara con el que uno conozca previamente, eso es inevitable. Eso
de que "no debe compararse" es ser muy extremista.


y porque también se pueden seguir usando lenguajes que si se parecen más a
esa sintaxis.




Dices "lenguajes" pero, para el que venga de VFP, aparte de VB.NET, que ya
no lo es tanto como era VB, conoces algun otro parecido que funcione para
.NET y sea comparable con C# ?



Y respecto a LinQ y las expresiones lambda... es tan simple como que si no
se entiende, no se use.



Bastante profundo tu argumento :)

Si hasta ahora se han podido hacer las cosas con más o menos dificultad con
los lenguajes actuales, se van a poder seguir haciendo en el futuro, haya o
no novedades. Si supone un esfuerzo grande tener que aprender novedades de
un lenguaje, pues no se aprenden y se sigue usando lo que ha habido de
siempre, es así de sencillo.




Si vieras lo fundamental que serán LinQ y lambda en el futuro de .NET
seguro que revisarías ese argumento tan simple y conformista que has dado de
que "si no entiendes no lo uses". Te recomiendo que profundices en el tema
y veras de que estoy hablando. Si ya lo has hecho me disculpas pero fue que
me dio la impresion de que no te has empapado mucho de esos dos temas.


Saludos

Rafa
Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente AnteriorRespuesta Tengo una respuesta
Search Busqueda sugerida