Head First C# Code: Chapter 15
Jimmy's Comics
Form1.cs
using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Linq;
using System.Text;
using System.Windows.Forms;
namespace _5_Jimmy_s_Comics
{
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private static List<Comic> BuildCatalog()
{
List<Comic> comics = new List<Comic>() {
new Comic() { Name = "Johnny America vs. the Pinko", Issue = 6 },
new Comic() { Name = "Rock and Roll (limited edition)", Issue = 19 },
new Comic() { Name = "Woman’s Work", Issue = 36 },
new Comic() { Name = "Hippie Madness (misprinted)", Issue = 57 },
new Comic() { Name = "Revenge of the New Wave Freak (damaged)", Issue = 68 },
new Comic() { Name = "Black Monday", Issue = 74 },
new Comic() { Name = "Tribal Tattoo Madness", Issue = 83 },
new Comic() { Name = "The Death of an Object", Issue = 97 }
};
return comics;
}
private static Dictionary<int, int> GetPrices()
{
Dictionary<int, int> values = new Dictionary<int, int>();
values.Add(6, 3600);
values.Add(19, 500);
values.Add(36, 650);
values.Add(57, 13525);
values.Add(68, 250);
values.Add(74, 75);
values.Add(83, 25);
values.Add(97, 35);
return values;
}
private void button1_Click(object sender, EventArgs e)
{
List<Comic> comics = BuildCatalog();
Dictionary<int, int> values = GetPrices();
var mostExpensive =
from comic in comics
where values[comic.Issue] > 500
orderby values[comic.Issue] descending
select comic;
foreach (Comic comic in mostExpensive)
Console.WriteLine("{0} is worth {1:c}",
comic.Name, values[comic.Issue]);
}
public List<Purchase> FindPurchases()
{
List<Purchase> purchases = new List<Purchase>() {
new Purchase() { Issue = 68, Price = 225 },
new Purchase() { Issue = 19, Price = 375 },
new Purchase() { Issue = 6, Price = 3600 },
new Purchase() { Issue = 57, Price = 13215 },
new Purchase() { Issue = 36, Price = 660 },
};
return purchases;
}
private void button2_Click(object sender, EventArgs e)
{
List<Comic> comics = BuildCatalog();
Dictionary<int, int> values = GetPrices();
List<Purchase> purchases = FindPurchases();
var results =
from comic in comics
join purchase in purchases
on comic.Issue equals purchase.Issue
orderby comic.Issue ascending
select new { comic.Name, comic.Issue, purchase.Price };
int gregsListValue = 0;
int totalSpent = 0;
foreach (var result in results)
{
gregsListValue += values[result.Issue];
totalSpent += result.Price;
Console.WriteLine("Issue #{0} ({1}) bought for {2:c}",
result.Issue, result.Name, result.Price);
}
Console.WriteLine("I spent {0:c} on comics worth {1:c}",
totalSpent, gregsListValue);
}
}
}







