Я работаю над проектом с использованием Subsonic 2.1. Для простого поискового запроса у меня есть следующий код:
DAL.ItemCollection coll = new DAL.ItemCollection();
SubSonic.Select s = new SubSonic.Select();
s.From(DAL.Item.Schema);
s.Where("Title").Like("%" + q + "%").Or("Tags").Like("%" + q + "%").And("IsActive").IsEqualTo(true);
if (fid > 0)
{
s.And("CategoryID").IsEqualTo(fid);
Session["TotalSearchResults"] = null;
}
s.Top(maxitems);
//We'll get the recordcount before paged results
total = s.GetRecordCount();
s.Paged(pageindex, pagesize);
s.OrderDesc("Hits");
s.OrderDesc("Points");
s.OrderDesc("NumberOfVotes");
coll = s.ExecuteAsCollection<DAL.ItemCollection>();
Теперь дело в том, что когда мой fid (FilterId) больше 0, фильтр CategoryID не работает. Без проблем он достигает точки останова, но не фильтруется. Это как-то связано с запросом LIKE? Это прекрасно работает, если я удаляю часть if и текущий s.where и изменяю запрос так:
s.Where("CategoryID").IsEqualTo(fid);
Я что-то здесь упускаю?
С уважением,
Mark