Today I am going to show how you can use LINQ to get a List of addresses from an employee list of which an employee name criteria is matched. Normally this is a tough situation to do who is new to LINQ. I am hereby sharing the code snippet on how to do the same.
I have created a class named Employee and Class named Address. Employee has got list of Addresses. We will be writing code to get the list of Addressees of an Employee whose name matches criteria. This employee has to be picked from the list of employees.
The code snippet should give you a clear understanding.
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
namespace LinqPOC {
public class Employee {
public string Name { get; set; }
public List<Address> Addresses { get; set; }
}
public class Address {
public string Street1 { get; set; }
public string Street2 { get; set; }
}
class Program {
static void Main(string[] args) {
// Insert dummy data
List<Employee> employees = new List<Employee>();
Employee employee = new Employee();
employee.Name = "Emp1";
employee.Addresses = new List<Address>();
employee.Addresses.Add(new Address { Street1 = "Emp1-Add1-Street1", Street2 = "Emp1-Add1-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp1-Add2-Street1", Street2 = "Emp1-Add2-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp1-Add3-Street1", Street2 = "Emp1-Add3-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp1-Add4-Street1", Street2 = "Emp1-Add4-Street2" });
employees.Add(employee);
employee = new Employee();
employee.Name = "Emp2";
employee.Addresses = new List<Address>();
employee.Addresses.Add(new Address { Street1 = "Emp2-Add1-Street1", Street2 = "Emp2-Add1-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp2-Add2-Street1", Street2 = "Emp2-Add2-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp2-Add3-Street1", Street2 = "Emp2-Add3-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp2-Add4-Street1", Street2 = "Emp2-Add4-Street2" });
employees.Add(employee);
employee = new Employee();
employee.Name = "Emp3";
employee.Addresses = new List<Address>();
employee.Addresses.Add(new Address { Street1 = "Emp3-Add1-Street1", Street2 = "Emp3-Add1-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp3-Add2-Street1", Street2 = "Emp3-Add2-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp3-Add3-Street1", Street2 = "Emp3-Add3-Street2" });
employee.Addresses.Add(new Address { Street1 = "Emp3-Add4-Street1", Street2 = "Emp3-Add4-Street2" });
employees.Add(employee);
// Searching for the list of addressses for an employee whose name is Emp3
var addresses = from emp in employees
from add in emp.Addresses
where emp.Name == "Emp3"
select add;
foreach (var address in addresses) {
Console.WriteLine(address.Street1);
Console.WriteLine(address.Street2);
}
Console.ReadLine();
}
}
}