正規化されていないDBからデータをひっぱってくるクラスがあるとする。
こんなやつ。
HogeTbl
public class HogeTbl
{
public int colKey { get; set; }
public string Hoge1 { get; set; }
public string Hoge2 { get; set; }
public string Hoge3 { get; set; }
public string Hoge4 { get; set; }
public string Hoge5 { get; set; }
public string Hoge6 { get; set; }
public string Hoge7 { get; set; }
public string Hoge8 { get; set; }
public string Hoge9 { get; set; }
public string Hoge10 { get; set; }
public string Hoge11 { get; set; }
public string Hoge12 { get; set; }
public string Hoge13 { get; set; }
public string Hoge14 { get; set; }
public string Hoge15 { get; set; }
public string Hoge16 { get; set; }
}
Hoge1〜Hoge16に対して同じ処理を行いたい場合はIEnumertorを使えれば便利なのでyieldを使ってみる。
Fuga.cs
public class Fuga
{
private void fuga(HogeTbl tbl)
{
foreach(String hoge in this.getHoge(tbl)
{
nya.nyan(hoge);
}
}
private IEnumerator<String> getHoge(HogeTbl tbl)
{
if(tbl == null)
{
yield break;
}
yield return tbl.Hoge1;
yield return tbl.Hoge2;
yield return tbl.Hoge3;
yield return tbl.Hoge4;
yield return tbl.Hoge5;
yield return tbl.Hoge6;
yield return tbl.Hoge7;
yield return tbl.Hoge8;
yield return tbl.Hoge9;
yield return tbl.Hoge10;
yield return tbl.Hoge11;
yield return tbl.Hoge12;
yield return tbl.Hoge13;
yield return tbl.Hoge14;
yield return tbl.Hoge15;
yield return tbl.Hoge16;
}
}
各Hogeに対してどんな処理を行ってるかわかりやすいし、けっこういいんじゃないかなって思ってる。
yieldを使ってみたかったからってわけじゃないんだからねっ。