Возьмите следующий псевдо-код C #:
using System;
using System.Data;
using System.Linq;
using System.Collections.Generic;
public IEnumerable<IDataRecord> GetRecords(string sql)
{
// DB logic goes here
}
public IEnumerable<IEmployer> Employers()
{
string sql = "select EmployerID from employer";
var ids = GetRecords(sql).Select(record => (record["EmployerID"] as int?) ?? 0);
return ids.Select(employerID => new Employer(employerID) as IEmployer);
}
Было бы быстрее, если бы два вызова Select () были объединены? Есть ли дополнительная итерация в приведенном выше коде? Следующий код быстрее?
public IEnumerable<IEmployer> Employers()
{
string sql = "select EmployerID from employer";
return GetRecords(sql).Select(record => new Employer((record["EmployerID"] as int?) ?? 0) as IEmployer);
}
Я думаю, что первый пример более читабелен, если нет различий в производительности.