以下C#功能是否相同?
protected IEnumerable<TResult> Execute(DbCommand command)
{
IDataReader reader = database.ExecuteReader(command);
foreach (TResult result in resultSetMapper.MapSet(reader))
{
yield return result;
}
}
protected IEnumerable<TResult> Execute2(DbCommand command)
{
IDataReader reader = database.ExecuteReader(command);
return resultSetMapper.MapSet(reader);
}
我找到了第一个浏览Microsoft.Practices.EnterpriseLibrary.Data.CommandAccessor代码的函数。
如果我理解正确的收益率,那么foreach没有任何意义。如果MapSet返回延迟集合,则可以直接返回。如果MapSet返回一个物化集合,那么逐个返回它的元素是没有利润的。