Use foreach loop to deal with the result from linq : foreach loop « LINQ « C# / CSharp Tutorial






using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

public class MainClass {
    public static void Main() {
        List<Customer> customers = GetCustomerList();
        var waCustomers =
            from c in customers
            where c.Region == "R1"
            select c;
        foreach (var customer in waCustomers) {
            Console.WriteLine("Customer {0}: {1}", customer.CustomerId, customer.CompanyName);
            foreach (var order in customer.Orders) {
                Console.WriteLine(" Order {0}: {1}", order.Id, order.OrderDate);
            }
        }
    }
    static List<Customer> GetCustomerList() {
        List<Product> empTree = new List<Product>();
        empTree.Add(new Product { ProductName = "A", Category = "O", UnitPrice = 12, UnitsInStock = 5, Total = 36, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
        empTree.Add(new Product { ProductName = "B", Category = "O", UnitPrice = 2, UnitsInStock = 4, Total = 35, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
        empTree.Add(new Product { ProductName = "C", Category = "O", UnitPrice = 112, UnitsInStock = 3, Total = 34, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
        empTree.Add(new Product { ProductName = "D", Category = "O", UnitPrice = 112, UnitsInStock = 0, Total = 33, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
        empTree.Add(new Product { ProductName = "E", Category = "O", UnitPrice = 1112, UnitsInStock = 2, Total = 32, OrderDate = new DateTime(2005, 1, 1), Id = 1 });
        empTree.Add(new Product { ProductName = "F", Category = "O", UnitPrice = 11112, UnitsInStock = 0, Total = 31, OrderDate = new DateTime(2005, 1, 1), Id = 1 });

        List<Customer> l = new List<Customer>();
        l.Add(new Customer { CompanyName = "A", Region = "R1", UnitsInStock = 1, Orders = empTree, CustomerId =0});
        l.Add(new Customer { CompanyName = "B", Region = "R2", UnitsInStock = 2, Orders = empTree, CustomerId = 1 });
        l.Add(new Customer { CompanyName = "C", Region = "R3", UnitsInStock = 3, Orders = empTree, CustomerId = 2 });
        l.Add(new Customer { CompanyName = "D", Region = "R4", UnitsInStock = 4, Orders = empTree, CustomerId = 3 });
        l.Add(new Customer { CompanyName = "E", Region = "R5", UnitsInStock = 5, Orders = empTree, CustomerId = 4 });
        return l;
    }
}

class Customer : IComparable<Customer> {
    public string CompanyName { get; set; }
    public string Region { get; set; }
    public List<Product> Orders { get; set; }
    public int UnitsInStock { get; set; }
    public int CustomerId { get; set; }

    public override string ToString() {
        return String.Format("Id: {0}, Name: {1}, Region: {3}", this.CustomerId, this.CompanyName, this.Region);
    }
    int IComparable<Customer>.CompareTo(Customer other) {
        if (other == null)
            return 1;

        if (this.CustomerId > other.CustomerId)
            return 1;

        if (this.CustomerId < other.CustomerId)
            return -1;

        return 0;
    }
}
class Product : IComparable<Product> {
    public string ProductName { get; set; }
    public string Category { get; set; }
    public int UnitPrice { get; set; }
    public int UnitsInStock { get; set; }
    public int Total { get; set; }
    public DateTime OrderDate { get; set; }
    public int Id { get; set; }

    public override string ToString() {
        return String.Format("Id: {0}, Name: {1} , Category: {3}", this.Id, this.ProductName, this.Category);
    }
    int IComparable<Product>.CompareTo(Product other) {
        if (other == null)
            return 1;
        if (this.Id > other.Id)
            return 1;

        if (this.Id < other.Id)
            return -1;

        return 0;
    }
}








22.14.foreach loop
22.14.1.Use foreach loop to deal with the result from linq
22.14.2.Linq Over Array Using Sequence
22.14.3.Linq Over ArrayList
22.14.4.Linq To Objects
22.14.5.Linq over array
22.14.6.Cars going faster than 55, ordered by PetName
22.14.7.Simple linq