データテーブルからレコードを抽出する際に、例えば以下のようなコードを書くと思う。
var drs = from dt in hogeDataSet.hogeDataTable.AsEnumerable()
where (dt.Field<string>("cdColumn") == cd)
select dt;
foreach (hogeDataSet.hogeDataTableRow dr in drs)
{
・
・
・
}
だがしかし、データテーブルがコードマスターのような機能をしており、常に1件しかレコードを読まないとしたらどうであろうか?
なんとなくforeachは使いたくない。だって1件しかないことがわかっているんですもの。
で、以下のように書いてみた。
var drs = from dt in hogeDataSet.hogeDataTable.AsEnumerable()
where (dt.Field<string>("cdColumn") == cd)
select dt;
IEnumerator<hogeDataSet.hogeDataTableRow> enumerator = drs.GetEnumerator();
enumerator.MoveNext();
hogeDataSet.hogeDataTableRow dr = (hogeDataSet.hogeDataTableRow)enumerator.Current;
・・・。どちらがいいか微妙だ・・・。でもやっぱりforeachかな? たまたま1レコードしかない場合だよと割り切るのが正解のような気がする。でも、IEnumeratorを使った下の書き方だとソースコードから1レコードしかないことが読み取れるし・・・。
ちょっと悩んでます。
もしくはADO.NETのExecuteScalar()のようなメソッドを、上記のIEnumeratorを用いて用意しちゃえばいいかな?
LINQを使って他に良い方法があれば教えて下さい。
あと、C# 3.0に対応したソースコードをカラー化してブログとかに張り付けられるようなツールをどなたか紹介して下さい。m(_ _)m