はじめに
前回までで,
コード比較で理解するC#3. 0の生産力
最初に,
C#3.

C#2.

どちらもリストボックスのアイテムをクリックすることで,

行っていることは,
- 番号・
名前・ 年齢プロパティを持つオブジェクトの作成 - 各オブジェクトをアイテムとしたコレクションオブジェクトの作成
- 番号・
名前プロパティを持つオブジェクトのデータソースに作り変え - 同時に,
未成年情報だけを抽出して名前順に並べ替え
Form3,
C#3.
using System.Linq;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form3 : Form {
public Form3() {
InitializeComponent();
var c = new[] {
new { Code = 1, Name = "Tanaka" , Age = 18 },
new { Code = 2, Name = "Suzuki" , Age = 32 },
new { Code = 3, Name = "Sato" , Age = 19 },
new { Code = 4, Name = "Yamada" , Age = 12 },
new { Code = 5, Name = "Aoyama" , Age = 21 }
};
var q =
from x in c
where x.Age < 20
orderby x.Name
select new { Code = x.Code, Name = x.Name };
listBox.DataSource = q.ToArray();
listBox.ValueMember = "Code";
listBox.DisplayMember = "Name";
listBox.SelectedValueChanged += (sender, e) => {
this.Value = listBox.SelectedValue;
MessageBox.Show(this.Value.ToString()); };
}
public object Value { get; private set; }
}
}
C#2.
using System;
using System.Collections.Generic;
using System.Windows.Forms;
namespace WindowsFormsApplication1 {
public partial class Form2 : Form {
public Form2() {
InitializeComponent();
Member tanaka = new Member();
tanaka.Code = 1;
tanaka.Name = "Tanaka";
tanaka.Age = 18;
Member suzuki = new Member();
suzuki.Code = 2;
suzuki.Name = "Suzuki";
suzuki.Age = 32;
Member sato = new Member();
sato.Code = 3;
sato.Name = "Sato";
sato.Age = 19;
Member yamada = new Member();
yamada.Code = 4;
yamada.Name = "Yamada";
yamada.Age = 12;
Member aoyama = new Member();
aoyama.Code = 5;
aoyama.Name = "Aoyama";
aoyama.Age = 21;
Member[] c = new Member[] {
tanaka, suzuki, sato, yamada, aoyama };
List<Item> list = new List<Item>();
foreach (Member x in c) {
if (x.Age < 20) {
Item item = new Item();
item.Code = x.Code;
item.Name = x.Name;
list.Add(item);
}
}
list.Sort(
delegate(Item a, Item b) {
return string.Compare(a.Name, b.Name); });
listBox.DataSource = list;
listBox.ValueMember = "Code";
listBox.DisplayMember = "Name";
listBox.SelectedValueChanged +=
delegate(object sender, EventArgs e) {
this.Value = this.listBox.SelectedValue;
MessageBox.Show(this.Value.ToString()); };
}
private object _Value;
public object Value {
get { return this._Value; }
private set { this._Value = value; }
}
}
public class Item {
private int _Code;
public int Code {
get { return this._Code; }
set { this._Code = value; }
}
private string _Name;
public string Name {
get { return this._Name; }
set { this._Name = value; }
}
}
public class Member {
private int _Code;
public int Code {
get { return this._Code; }
set { this._Code = value; }
}
private string _Name;
public string Name {
get { return this._Name; }
set { this._Name = value; }
}
private int _Age;
public int Age {
get { return this._Age; }
set { this._Age = value; }
}
}
}
もちろん,