我有一个项目,我有一个随机生成的4个字符代码表,即ABCD。
该项目是关于限制某些随机生成的代码,如果它们满足某些限制,即包含某些单词(诅咒单词或保留单词)。用户应该能够输入任意数量的限制词,并且应用程序循环遍历我的代码表中的所有代码,如果它们与任何限制相匹配,则将使用限制ID进行标记。
到目前为止,我有3个限制(可能需要超过这3个以上的自定义逻辑)
我的限制表看起来像
Restriction ID | Restriction Type | Description
1 | 1 | HQ
2 | 3 | BAD
Code Table looks like
ID | Postcode | Restriction ID
1 | ABCD | NULL
2 | ABHQ | 1
我的问题是关于如何在限制类型和如何实现其逻辑方面变得聪明,即。每种限制类型都需要一个不同的方法,用于检查新类型是否应该限制邮政编码。
所以在我的代码中..
//Loop through each code
For each code
//Loop through each restriction
For each restriction
?? How to implement custom logic for each different restriction type i.e contains / startswith / endwith.
我想我可以做一个switch语句并硬编码方法来调用类型ID,或者我想可能在限制类型表中为Method添加一个列,该列可以使用.net方法调用该类型或者存储过程?
有什么建议吗?
答案 0 :(得分:0)
我认为您需要考虑将来可能需要的其他可能的限制类型。如果这3个就足够了,那么你可能会过度复杂化,只是为了适应永远不会使用的灵活性。
例如,如果你坚持这3种限制类型,那么一个简单的解决方案,甚至不使用存储过程,可能是:
-- Select all restricted codes and their restriction type.
SELECT c.ID, c.Postcode, t.RestrictionId
FROM CodeTable c
INNER JOIN RestrictionTable t
ON c.Postcode LIKE
CASE t.RestrictionType
WHEN 1 THEN t.Description + '%'
WHEN 2 THEN '%' + t.Description
WHEN 3 THEN '%' + t.Description + '%'
ELSE t.Description
END