public IList<Program> GetProgramsByTitle(DateTime startTime, DateTime endTime, string title)
{
IFormatProvider mmddFormat = new CultureInfo(String.Empty, false);
string StartTimeString = startTime.ToString(GetDateTimeString(), mmddFormat);
string EndTimeString = endTime.ToString(GetDateTimeString(), mmddFormat);
StringBuilder SqlSelectCommand = new StringBuilder();
SqlSelectCommand.Append("select p.* from Program p inner join Channel c on c.idChannel = p.idChannel ");
SqlSelectCommand.AppendFormat(
"where ((EndTime > '{0}' and EndTime < '{1}') or (StartTime >= '{0}' and StartTime <= '{1}') or (StartTime <= '{0}' and EndTime >= '{1}')) and title = '{2}' and c.visibleInGuide = 1 order by startTime",
StartTimeString, EndTimeString, EscapeSQLString(title)
);
SqlStatement stmt = new SqlBuilder(StatementType.Select, typeof (Program)).GetStatement(true);
SqlStatement ManualJoinSQL = new SqlStatement(StatementType.Select, stmt.Command, SqlSelectCommand.ToString(),
typeof (Program));
return ObjectFactory.GetCollection<Program>(ManualJoinSQL.Execute());
}