InicioCiencia EducacionObtener Datos Filtrados Usando Linq C# y VB.Net

Obtener Datos Filtrados Usando Linq C# y VB.Net

Ciencia Educacion6/19/2012
Hola taringeros comparto con ustedes nuevamente un articulo mas cortesía de Codemania foro al que invito a todos los programadores. Siempre que trabajamos con registros o colecciones de datos tenemos la necesidad de hacer búsquedas usando alguna filtro para obtener los datos que cumplan ciertas condiciones, pues bien ahora veremos como hacer esto utilizando LINQ(tecnología que estoy aprendiendo). Para este ejemplo usare una lista de tipo clase(personas) para representar los registros y luego obtendremos los registros que sean iguales o mayores a la edad que el usuario especifique usando linq. El ejemplo esta desarrollado con C# Y VB.Net al final encontraran los proyectos para descargar. Nuestro formulario tendrá el siguiente diseño. Empezaremos agregando una clase a nuestro proyecto Personas.cs Personas.vb y tendrá el siguiente código. public class Personas { private string nombre; private string apellido; private int edad; //propiedades public string Nombre { get { return nombre;} set { nombre = value; } } public string Apellido { get { return apellido; } set { apellido = value; } } public int Edad { get { return edad; } set { edad = value; } } //constructor public Personas(string nombre, string apellido, int edad) { this.nombre = nombre; this.apellido = apellido; this.edad = edad; } //registros public static List Registros() { List personas = new List(); personas.Add(new Personas("Cristian","Torres",20)); personas.Add(new Personas("Jose", "Alfaro", 18)); personas.Add(new Personas("Briseyda", "Flores", 12)); personas.Add(new Personas("Diana", "Turcios", 17)); personas.Add(new Personas("Miguel", "Fernadez", 40)); personas.Add(new Personas("Pedro", "Perez", 11)); personas.Add(new Personas("Nicole", "Garcia", 20)); return personas; } } Public Class Personas Private _nombre As String Private _apellido As String Private _edad As Integer 'propiedades Public Property Nombre() As String Get Return _nombre End Get Set(ByVal value As String) _nombre = value End Set End Property Public Property Apellido() As String Get Return _apellido End Get Set(ByVal value As String) _apellido = value End Set End Property Public Property Edad() As Integer Get Return _edad End Get Set(ByVal value As Integer) _edad = value End Set End Property 'constructor Public Sub New(ByVal nombre As String, ByVal apellido As String, ByVal edad As Integer) _nombre = nombre _apellido = apellido _edad = edad End Sub 'registros Public Shared Function Registros() As List(Of Personas) Dim personas As New List(Of Personas)() personas.Add(New Personas("Cristian", "Torres", 20)) personas.Add(New Personas("Jose", "Alfaro", 18)) personas.Add(New Personas("Briseyda", "Flores", 12)) personas.Add(New Personas("Diana", "Turcios", 17)) personas.Add(New Personas("Miguel", "Fernadez", 40)) personas.Add(New Personas("Pedro", "Perez", 11)) personas.Add(New Personas("Nicole", "Garcia", 20)) Return personas End Function End Class El código es sencillo y fácil de entender lo único que se hace es crear una lista de registros de tipo clase Pesona que son los que utilizaremos para hacer nuestra consulta. Ahora en nuestro en nuestro formulario tendremos el siguiente código. public Form1() { InitializeComponent(); CargarList(); } List personas; public void CargarList() { personas = Personas.Registros(); } private void Form1_Load(object sender, EventArgs e) { dataGridView1.DataSource = Personas.Registros(); } private void button1_Click(object sender, EventArgs e) { List resultados = new List(); int edad = Convert.ToInt32(textBox1.Text); var query = personas.Where(p => p.Edad >= edad);//obtener datos sean mayores e iguales a la edad digitada foreach (var result in query) { resultados.Add(result); } dataGridView1.DataSource = resultados; } Public Sub New() InitializeComponent() CargarList() End Sub Dim pers As List(Of Personas) Public Sub CargarList() pers = Personas.Registros() End Sub Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load DataGridView1.DataSource = Personas.Registros() End Sub Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click Dim resultados As New List(Of Personas) Dim edad As Integer = Convert.ToInt32(TextBox1.Text) Dim query = pers.Where(Function(p) p.Edad >= edad) 'obtener datos sean mayores a la edad digitada For Each result In query resultados.Add(result) Next DataGridView1.DataSource = resultados End Sub En el código lo que hacemos primeramente es cargar los datos de la lista en el constructor del formulario. Luego en el evento load del formulario cargamos todos los datos de lista en el datagriedview. Y para hacer el filtro de los datos en el evento click del botón puede verse que lo primero que hacemos es crear una lista de tipo personas llamada resultados que sera la que tendrá todos los registros que cumplan con el filtro que aremos que este caso sera por la edad, hacemos el filtro de nuestros datos usando linq y expresion lambda de la siguiente manera. var query = personas.Where(p => p.Edad >= edad); Dim query = pers.Where(Function(p) p.Edad >= edad) Lo que estamos diciendo en esa linea es que obtendremos los registros de las personas donde la edad sea mayor o igual al dato introducido en el textbox. Y por ultimo lo que hacemos en el código es llenar la lista resultados con los datos obtenidos de nuestra consulta. Para descargar los códigos del proyecto lo pueden hacer desde mi blog. http://cristiantorresalfaro.blogspot.com/2012/06/obtener-datos-filtrados-usando-linq.html Saludos desde El Salvador...
Datos archivados del Taringa! original
20puntos
2,395visitas
0comentarios
Actividad nueva en Posteamelo
0puntos
3visitas
0comentarios
Dar puntos:

Dejá tu comentario

0/2000

Autor del Post

k
krizztorres🇦🇷
Usuario
Puntos0
Posts27
Ver perfil →
PosteameloArchivo Histórico de Taringa! (2004-2017). Preservando la inteligencia colectiva de la internet hispanohablante.

CONTACTO

18 de Septiembre 455, Casilla 52

Chillán, Región de Ñuble, Chile

Solo correo postal

© 2026 Posteamelo.com. No afiliado con Taringa! ni sus sucesores.

Contenido preservado con fines históricos y culturales.