看看下面的僞C#代碼:在LINQ中打破鏈接Select()是否會損害性能?
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);
}
難道是如果合併這兩個選擇()調用更快?上面的代碼中是否有額外的迭代?下面的代碼更快嗎?
public IEnumerable<IEmployer> Employers()
{
string sql = "select EmployerID from employer";
return GetRecords(sql).Select(record => new Employer((record["EmployerID"] as int?) ?? 0) as IEmployer);
}
我認爲如果性能沒有差異,第一個例子更具可讀性。
這兩個代碼片段是否真的相同?一個有'GetRecords(sql)',另一個'Query.Records(sql)'... – 2010-05-04 05:19:13
@Jeremy - 他們應該是一樣的 - 這是我的錯字 – Justin 2010-05-04 10:14:02