我有一个:
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 函数(每个模型都有一个,它们都继承自 BaseModel)。我一直在阅读有关谓词代表之类的内容,但找不到如何执行类似(pseduocode)的示例:
IEnumerable<T> l = Cache[type].Data.Cast<T>()
.Select(item => item)
.RunMeOnEachItemLater(InitWrapperDelegate);
如果您想知道这是做什么用的,我有一个 MVC 项目,并且我正在实现一个模型数据缓存。