【问题标题】:Linq to Entities - Drill down filter (Asp.net)Linq to Entities - 向下钻取过滤器 (Asp.net)
【发布时间】:2011-08-28 07:26:34
【问题描述】:

我一直在寻找一种对来自 linq 的实体集合执行多个“where”过滤器的好方法。有很多网站在侧面使用过滤器进行搜索,例如 ebay。

所使用的技术称为“向下钻取”过滤器。现在,我正在尝试在我的 3 层模型中使用 Linq-to-Entities 找到实现此技术的正确方法。

该技术使用较早使用的接收实体集合,并通过某种过滤器缩小范围,但即使在相同的过滤“类别”内,也可以应用和删除多个过滤器。

希望有人找到我正确的教程链接或如何以正确方式使用它的方法。

【问题讨论】:

  • 除了直接投反对票外,如果有人将您的问题标记为垃圾邮件,我很确定它会自动投反对票。
  • 我的问题仍然很严重,我真的在寻找最好的方法。这些链接都来自可靠的网站(如 ebay)。我希望投票不会影响我获得好答案的机会。
  • @Charles,好吧,至少现在我已经明白了。但我的问题仍然没有任何答案。希望有人尽快给出答案!哦,关于你自己的回答,我会调查我的问题并在我解决其中一个问题时回答它们。
  • 打赌它是一个加密的 id 字段而不是一个过滤器
  • 我已经清除了这个问题的垃圾邮件标记,因为这是一个严肃的问题。但是,您需要一些上下文才能使用链接。如果链接断开,您的问题将失去所有上下文。请考虑修改。

标签: asp.net filter linq-to-entities three-tier drilldown


【解决方案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(),我已经在几个 web 应用程序上使用它并取得了巨大成功。当您想要的过滤器不直接映射到数据库中的字段时,这会变得有点棘手,但可以采用类似的方法。

【讨论】:

  • 感谢 Nate,但是每当 dllName.Text == "" 时,数据库可能会返回 null。并且在它周围放置 100 个 if 循环也不是很好,不是吗?
猜你喜欢
  • 1970-01-01
  • 2014-05-07
  • 1970-01-01
  • 2011-06-10
  • 2023-03-14
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2017-09-24
相关资源
最近更新 更多