gpt4 book ai didi

c# - 将列表与其他多个列表进行比较

转载 作者:太空狗 更新时间:2023-10-30 01:24:51 26 4
gpt4 key购买 nike

我一直没有找到解决这个问题的方法,部分原因是我不确定如何最好地解释这个问题!希望我在这里很清楚,但如果没有,请随时询问更多信息。

在顶层:在我们的数据库中,每个客户都可以拥有多项服务。服务单独分配给客户。但是,为了报告目的,我们需要将服务“分组”到常见服务组合的“包”中。

我有一个包含包定义的数据库 - 一个名为 packageServices 的表,它简单地列出了每个包 ID 及其关联的 ServiceID。因此,我可以检索每个包的服务列表。

我可以从同一个数据库中检索特定客户的 ServiceID 列表。

我想要完成的是比较为该客户检索到的 ServiceID 列表,并查看该组合是否与任何定义的包(即 ServiceID 的组合)匹配,如果匹配则报告该客户拥有哪些包.

就比较而言,我不知道从哪里开始!我想我需要首先为每个包创建某种服务 ID 列表(而不是我当前的 KeyValuePairs(在字典中)每个包有多行?)然后遍历包并将这些服务列表与列表进行比较客户拥有哪些服务?

这里使用的数据类型可能不是最合适的 - 在很多情况下我指的是“逻辑”列表而不是 C# List 对象 - 我可以使用任何合适的数据类型:)

非常感谢任何帮助!

编辑 - 有人建议我在 SQL 而不是在我的 C# 应用程序中整理这些信息。这似乎是个好主意,下面的答案之一让我很接近。但是,存在确定包是较低包的“升级”还是包本身的“业务规则”,这使事情变得非常复杂。

我越努力使这项工作成功,我就越认为我已经咬得太多了!我正在尝试适本地设计它,以便将来对服务或包​​的任何更改都可以轻松处理 - 这些更改不太可能但可能发生。但是,仅对我目前所见的选项进行硬编码会容易得多!

编辑 2 - 我一直在努力解决这个问题,有人建议我为每个包分配一个“权重”和一个“组”。组在那里确保客户只能从每个组中获得一个包裹,并且权重在那里确保只返回“最高”级别的包裹。将此与@MarceloCantos 的查询结合使用将意味着我应该能够从每个组中返回“最高”权重的包 - 这看起来可能符合应用程序的要求!

感谢迄今为止提供帮助的所有人 - 我很惊讶收到回复的速度如此之快,回复的质量也如此之高。我会试一试,看看进展如何。

最佳答案

我建议您不要尝试即时计算客户订阅的包裹(订阅可能不是正确的词,但您知道我的意思)。我建议您保留单独的记录,指示客户在数据库中订阅的包裹。每次客户添加新服务时,您都会使用一条消息来指示添加服务的事件已发生,并通过使用添加新产品后完成的任何软件包更新该客户的软件包来处理该事件。

关于c# - 将列表与其他多个列表进行比较,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8295337/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com