using System; using System.Collections.Generic; using System.Linq; using System.Text; namespace UsingLinqCollections { class Program { static void Main(string[] args) { // Create a collection using collection initializer syntax. List accounts = new List { new BankAccount { AccountHolder = "Huey", Balance = 4000 }, new BankAccount { AccountHolder = "Lewey", Balance = 5000 }, new BankAccount { AccountHolder = "Dewey" } , new BankAccount { AccountHolder = "Donald", Balance = 10000 } }; // Do some transactions. for (int i = 0; i < 5; i++) { accounts[0].Deposit(i * 100); } for (int i = 0; i < 20; i++) { accounts[1].Deposit(i * 100); } accounts[2].Withdraw(10000); OutputFullDetailsForAllAccounts(accounts); OutputNameAndBalanceForAllAccounts(accounts); OutputInCreditFewTransactionsAccounts(accounts); Console.ReadLine(); } private static void OutputFullDetailsForAllAccounts(List accounts) { Console.WriteLine("\nFull details for all accounts:"); var query = (from a in accounts select a); foreach (var a in query) { Console.WriteLine("Account holder: {0}, balance: {1}, num transactions: {2}", a.AccountHolder, a.Balance, a.Transactions.Count); } } private static void OutputNameAndBalanceForAllAccounts(List accounts) { Console.WriteLine("\nName and balance for all accounts:"); var query = from a in accounts select new { a.AccountHolder, a.Balance }; foreach (var item in query) { Console.WriteLine("Account holder: {0}, balance: {1}", item.AccountHolder, item.Balance); } } private static void OutputInCreditFewTransactionsAccounts(List accounts) { Console.WriteLine("\nAccounts in credit, with < 10 transactions:"); var query = from a in accounts where a.Balance >= 0 && a.Transactions.Count < 10 select a; foreach (var a in query) { Console.WriteLine("Account holder: {0}, balance: {1}, num transactions: {2}", a.AccountHolder, a.Balance, a.Transactions.Count); } Console.WriteLine(); } } }