foreach(DataRow dr in rows) {
DataSet.HogeHogeRow r = (DataSet.HogeHogeRow)x;
if (r.Id > 0) this.HogeHogeMethod(r.Id);
}
こんな記述を見つけては・・・
var q =
from DataSet.HogeHogeRow x in rows
where x.Id > 0
select(x.Id);
foreach(var id in q) this.HogeHogeMethod(id);
こんな風に書き直したい衝動に駆られる俺ガイルー
我慢しろ俺!
しかもコードが長くなっているジャマイカ!
(from DataSet.HogeHogeRow x in rows where x.Id > 0 select(x.Id)).ForEach(id => this.HogeHogeMethod(id));
こうやって書けるといいのに、と思ったら NyaRuRu さんが、こんなコードを提示していた。
http://blogs.wankuma.com/naka/archive/2007/06/03/79237.aspx
なるほど!
しかし、よくこんな方法を思いつくなぁ・・・ってことで書き直す(僕のスタイルと違うのでw)
static class Extensions {
public static void ForEach<T>(this IEnumerable<T> source, Action<T> action) {
foreach (T x in source) action(x);
}
}
おかげさまで、最終的には以下のコードになりました。
var q = from DataSet.HogeHogeRow x in rows where x.Id > 0 select(x.Id);
q.ForEach(id => this.HogeHogeMethod(id));
結局、書き直してしまった orz