私は持っています:
public Dictionary<string,BaseModel> data { get; set; }
そして、Linqの遅延実行のみを使用して、現在作業しているこのコードと同等のものを実現したいと考えています。
foreach (KeyValuePair<string, BaseModel> item in data)
{
T model = (T)item.Value; //each item needs to be cast to T, T inherits from BaseModel
model.Init(this, personId); //Init is a function I wrote I want to call on each item
l.Add(model); //currently I am adding each item to a list, but IEnumerable<T> can work
}
次のようなコードを書き始めました。
IEnumerable<T> l = Cache[type].Data.Cast<T>()
.Select(item => item);
しかし、すべてのアイテムで Init 関数を呼び出す方法がわかりません (各モデルには 1 つあり、すべて BaseModel から継承されます)。私は述語デリゲートなどについて読んでいますが、(疑似コード)のようなことをする方法の例を見つけることができません:
IEnumerable<T> l = Cache[type].Data.Cast<T>()
.Select(item => item)
.RunMeOnEachItemLater(InitWrapperDelegate);
これが何のためにあるのか疑問に思っている方のために説明すると、私は MVC プロジェクトを持っており、モデル データ キャッシュを実装しています。