using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
public class Customer
{
public string FirstName { get; set; }
public string LastName { get; set; }
public string EmailAddress { get; set; }
public override string ToString(){
return string.Format("{0} {1}\nEmail: {2}",FirstName, LastName, EmailAddress);
}
}
public class Address
{
public string Name { get; set; }
public string Street { get; set; }
public string City { get; set; }
public override string ToString()
{
return string.Format("{0}, {1}", Street, City);
}
}
public class Tester
{
static void Main()
{
List<Customer> customers = new List<Customer>
{
new Customer { FirstName = "A",
LastName = "B",
EmailAddress = "o@a.com"},
new Customer { FirstName = "B",
LastName = "C",
EmailAddress = "k@a.com" },
new Customer { FirstName = "D",
LastName = "C",
EmailAddress = "d@a.com" },
new Customer { FirstName = "F",
LastName = "G",
EmailAddress = "j@a.com" },
new Customer { FirstName = "L",
LastName = "H",
EmailAddress = "l@a.com" }
};
List<Address> addresses = new List<Address>
{
new Address { Name = "J",
Street = "165 Main",
City = "City 1" },
new Address { Name = "K H",
Street = "3207 Way",
City = "Cith 2" },
new Address { Name = "J G",
Street = "800 Blvd.",
City = "City 3" },
new Address { Name = "Mary",
Street = "7 Ave",
City = "City 4" },
new Address { Name = "Kate",
Street = "2251 Avenue",
City = "City 5" }
};
var result = customers.Join(addresses,
customer => string.Format("{0} {1}", customer.FirstName, customer.LastName),
address => address.Name,
(customer, address) => new { Customer = customer, Address = address })
.OrderBy(ca => ca.Customer.LastName)
.ThenByDescending(ca => ca.Address.Street);
foreach (var ca in result)
{
Console.WriteLine(string.Format("{0}\nAddress: {1}",ca.Customer, ca.Address));
}
}
}