Tag: restriction

如果IP位于IP范围之间,则限制IP

好的,这是星期五下午,我已经度过了漫长的一周,所以我会感激一些帮助! 目前,我有一个IP范围列表,如下所示: List ipRanges = new List(); ipRanges.Add(new IPRange { From = “145.36.0.0”, To = “145.36.255.255” }); ipRanges.Add(new IPRange { From = “194.183.227.184”, To = “194.183.227.191” }); ipRanges.Add(new IPRange { From = “193.131.192.0”, To = “193.131.223.255” }); 获得客户端的IP后,如果它落在这些范围集之间的任何位置,则需要将其重定向到其他位置。 例如, 如果有人使用IP 192.168.0.1访问了该站点,则允许他们访问。 如果他们访问了145.36.1.0 ,则不允许他们访问,因为它位于该列表中的第一个范围之间。 我可以按周期拆分每个IP,并计算出范围开始变化的位置,然后进行比较,但这在服务器上会很重。 我知道IP基本上只是十进制数,但我不确定它是如何工作的。 有没有人遇到过这个? 干杯,肖恩。

在NHibernate中,使用Disjunction可以得到双重结果

我正在尝试使用DetachedCriteria进行选择,我想在运行时添加OR分隔的几个条件。 如果我使用: Restrictions.Or( cond1, Restrictions.Or(cond2, Restrictions.Or(cond3, cond4)) ) 我得到了我想要的结果。 但如果我像这样使用Disjunction: var disjunction = Restrictions.Disjunction(); disjunction.Add(cond1); disjunction.Add(cond2); disjunction.Add(cond3); disjunction.Add(cond4); 我有cond1和cond2的实体对他们来说是真的,在结果我得到它们两次(在列表结果中相同的实体被返回两次)。 我不想使用QueryOver,因为我正在尝试使用QueryOver来完成一些难以实现的事情(我正在尝试做的最终结果是从filter的json获取sql查询)。 什么导致分离返回双打? 有没有办法在最后添加DISTINCT? 我做错了,我不应该在同一张桌子上使用析取不同的条件吗? 更新: 对于DISTINCT部分: criteria.SetResultTransformer(new NHibernate.Transform.DistinctRootEntityResultTransformer()); 要么 Projections.Distinct(Projections.Id()) 真正的解决方案如RadimKöhler所述 – 正确使用子查询。