我一直在寻找一种在linq上对实体集合进行多个“where”过滤的好方法。有许多网站使用过滤器进行搜索,例如ebay。
使用的技术称为“向下钻取”过滤器。现在,我正在尝试在使用Linq-to-Entities的3层模型中找到实现此技术的正确方法。
该技术使用先前使用的接收实体集合并使用某种过滤器缩小它,但是有多个过滤器,即使在相同的“过滤类别”中也可以应用和删除。
希望有人找到指向教程的正确链接或如何以正确方式使用它的方法。
答案 0 :(得分:0)
根据我的经验,侧面的每个“过滤器”都映射到数据库中的一个字段。这使得过滤器变得简单:
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()
取代它有意义,我已经在几个webapps上使用了这个并取得了巨大的成功。当您想要的过滤器不直接映射到数据库中的字段时,这会变得更加紧凑,但可以采取类似的方法。