我在寻找解决方案时没有运气,部分原因是我不确定如何最好地解释问题!希望我在这里表达清楚,但如果不清楚,请随时询问更多信息。
在顶层: 在我们的数据库中,每个客户都可以拥有多个服务。服务单独分配给客户。但是,我们需要将“组”服务合并为共同的服务组合“包”,以进行报告。
我有一个包含包定义的数据库 - 一个名为packageServices的表,简单地列出了每个PackageID和关联的ServiceID。因此,我可以检索每个包的服务列表。
从同一数据库中,我可以检索特定客户的ServiceID列表。
我试图完成的是比较为该客户检索到的ServiceID列表,并查看该组合是否与任何定义的包(即ServiceID的组合)匹配,如果匹配,则报告该客户拥有哪些包。
我正在努力知道从哪里开始比较!我想我需要首先为每个包创建某种服务ID列表(而不是我的当前KeyValuePairs(在字典中)每个包的多行?),然后遍历包并将这些服务列表与客户拥有的服务列表进行比较?
这里使用的数据类型可能不是最合适的 - 在许多情况下,我指的是“逻辑”列表而不是C#List对象 - 我可以使用适当的数据类型 :)
非常感谢任何帮助!
编辑 - 有人建议我在SQL中汇总此信息,而不是在我的C#应用程序中。这似乎是一个好主意,下面的一个答案已经让我接近。但是,有“业务规则”确定了一个包是否是较低包的“升级”或本身的包,这使事情变得非常复杂。
我越来越觉得自己承担了太多的任务!我正在尝试正确设计它,以便将来对服务或包进行的任何更改都可以轻松处理 - 这些更改不太可能但可能发生。但是,从我到目前为止看到的内容来看,硬编码选项会更容易!
编辑2 - 我一直在解决这个问题,有人建议我为每个包分配“权重”和“组”。组是为了确保客户只能从每个组中选择一个包,而权重是为了确保仅返回“最高”级别的包。与@MarceloCantos的查询一起使用,这将意味着我应该能够仅返回每个组中的“最高”权重包 - 这看起来可能符合应用程序的要求!
感谢所有提供帮助的人 - 我很惊讶回复开始迅速并且回复的质量很高。我会尝试一下,看看进展如何。
在顶层: 在我们的数据库中,每个客户都可以拥有多个服务。服务单独分配给客户。但是,我们需要将“组”服务合并为共同的服务组合“包”,以进行报告。
我有一个包含包定义的数据库 - 一个名为packageServices的表,简单地列出了每个PackageID和关联的ServiceID。因此,我可以检索每个包的服务列表。
从同一数据库中,我可以检索特定客户的ServiceID列表。
我试图完成的是比较为该客户检索到的ServiceID列表,并查看该组合是否与任何定义的包(即ServiceID的组合)匹配,如果匹配,则报告该客户拥有哪些包。
我正在努力知道从哪里开始比较!我想我需要首先为每个包创建某种服务ID列表(而不是我的当前KeyValuePairs(在字典中)每个包的多行?),然后遍历包并将这些服务列表与客户拥有的服务列表进行比较?
这里使用的数据类型可能不是最合适的 - 在许多情况下,我指的是“逻辑”列表而不是C#List对象 - 我可以使用适当的数据类型 :)
非常感谢任何帮助!
编辑 - 有人建议我在SQL中汇总此信息,而不是在我的C#应用程序中。这似乎是一个好主意,下面的一个答案已经让我接近。但是,有“业务规则”确定了一个包是否是较低包的“升级”或本身的包,这使事情变得非常复杂。
我越来越觉得自己承担了太多的任务!我正在尝试正确设计它,以便将来对服务或包进行的任何更改都可以轻松处理 - 这些更改不太可能但可能发生。但是,从我到目前为止看到的内容来看,硬编码选项会更容易!
编辑2 - 我一直在解决这个问题,有人建议我为每个包分配“权重”和“组”。组是为了确保客户只能从每个组中选择一个包,而权重是为了确保仅返回“最高”级别的包。与@MarceloCantos的查询一起使用,这将意味着我应该能够仅返回每个组中的“最高”权重包 - 这看起来可能符合应用程序的要求!
感谢所有提供帮助的人 - 我很惊讶回复开始迅速并且回复的质量很高。我会尝试一下,看看进展如何。