public IList<Program> GetProgramsByTitle(Channel channel, DateTime startTime, DateTime endTime, string title)
{
IFormatProvider mmddFormat = new CultureInfo(String.Empty, false);
SqlBuilder sb = new SqlBuilder(StatementType.Select, typeof (Program));
string sub1 = String.Format("(EndTime > '{0}' and EndTime < '{1}')",
startTime.ToString(GetDateTimeString(), mmddFormat),
endTime.ToString(GetDateTimeString(), mmddFormat));
string sub2 = String.Format("(StartTime >= '{0}' and StartTime <= '{1}')",
startTime.ToString(GetDateTimeString(), mmddFormat),
endTime.ToString(GetDateTimeString(), mmddFormat));
string sub3 = String.Format("(StartTime <= '{0}' and EndTime >= '{1}')",
startTime.ToString(GetDateTimeString(), mmddFormat),
endTime.ToString(GetDateTimeString(), mmddFormat));
sb.AddConstraint(Operator.Equals, "idChannel", channel.IdChannel);
sb.AddConstraint(string.Format("({0} or {1} or {2}) ", sub1, sub2, sub3));
sb.AddConstraint(Operator.Equals, "title", title);
sb.AddOrderByField(true, "starttime");
SqlStatement stmt = sb.GetStatement(true);
return ObjectFactory.GetCollection<Program>(stmt.Execute());
}