VB.NET:除了使用按位逻辑运算符在记录中查找匹配项之外,还有其他方法吗?

VB.NET: Are there alternatives to using bitwise logical operators to find matches in records?

提问人:Bill Norman 提问时间:2/3/2021 更新时间:2/3/2021 访问量:67

问:

在我的一些企业 VB 应用程序(适用于 Windows 和 ASP.NET)中,生成了各种报告,使用逻辑来确定这些报告的收件人。每个报告都被分配了一个二进制编码整数(因为缺乏更好的术语),即 1、2、4、8、16 等。收件人位于 SQL 数据库表中,该表包含一个字段,用于确定每个收件人收到的报告,即收件人 Snuffy Smiff 接收分配了二进制编码整数 1、4 和 16 的所有报告。然后,在收件人表中,Smiff 先生的“报告”字段包含这些整数的总和,值为 21。AND

当运行报告 #4 时,它将运行执行逻辑操作的收件人列表,并将 Smiff 先生列入收件人列表,因为数字 21 编辑有 4 个测试。但是当运行报告 #8 时,Smiff 先生没有被列入列表,因为 8 21 是ANDANDTRUEANDFALSE

我希望我已经充分解释了这一点。

现在我的问题是报告列表不断增长,而且比我预期的要长。目前有 15 个报告,因此报告 #15 的二进制整数已增加到 16384,并且每增加一个报告,该数字将翻倍。如果这种情况持续下去,它甚至会比服务器可以处理的还要大。

我的问题是,有没有一种替代方法可以用来选择不会导致算术溢出的收件人?

vb.net 二进制 逻辑运算符 逻辑 布尔运算

评论

0赞 Hursey 2/3/2021
只猜测一个列出报告接收方的表格过于简单且难以维护?
0赞 Bill Norman 2/3/2021
我考虑过这一点,并希望能有更有效率的东西。文本字段当然可以工作,但需要比整数更多的空间。
0赞 TnTinMn 2/3/2021
如果 DB 字段不需要对人类友好,则可以选择使用 BitArray 并在 DB 中存储字节数组。
0赞 Bill Norman 2/3/2021
@TnTinMn这听起来是个好主意。我会试试的。
0赞 Mary 2/5/2021
存储很便宜。程序员的计费时间并不便宜。

答: 暂无答案