Linq to Entities - Drill down filter (Asp.net)
Я искал хороший способ сделать несколько фильтров "где" для коллекции сущностей из linq. Есть много сайтов, которые используют фильтр для поиска на стороне, например, ebay.
Используемая техника называется фильтром "развертки". Сейчас я пытаюсь найти правильный способ реализации этой техники в моей трехуровневой модели, работающей с Linq-to-Entities.
Этот метод использует ранее использовавшуюся коллекцию полученных объектов и сужает ее с помощью какого-то фильтра, но есть несколько фильтров, которые могут применяться и удаляться даже в пределах одной и той же "категории" фильтрации.
Надеюсь, кто-нибудь найдет мне правильную ссылку на учебник или метод, как правильно его использовать.
1 ответ
По моему опыту, каждый "фильтр" на стороне отображается на поле в базе данных. Это упрощает создание фильтра:
var result = db.Table
.Where(t => t.Name.Contains(ddlName.Text))
.Where(t => t.Attribute1.Contains(Attribute1.Text));
.Where(t => t.Attribute2.Contains(Attribute2.Text));
Очевидно, вы можете заменить .Equals()
где это имеет смысл, я использовал это в нескольких веб-приложениях с большим успехом. Это становится немного сложнее, когда фильтры, которые вы хотите, не отображаются непосредственно на поля в вашей базе данных, но может быть применен аналогичный подход.