我還沒有找到解決方案的運氣,部分原因是我不確定如何最好地解釋問題!希望我在這裏清楚,但如果不是,請隨時索取更多信息。將列表與其他多個列表進行比較
在頂層: 在我們的數據庫中,每個客戶可以有多個服務。服務分別分配給客戶。但是,爲了報告目的,我們需要將「羣組」服務納入常見服務組合的「套餐」中。
我有一個包含包定義的數據庫 - 一個名爲packageServices的表,簡單地列出每個包ID與關聯的ServiceID。因此,我可以檢索每個包的服務列表。
從同一個數據庫中,我可以檢索特定客戶的ServiceID列表。
我試圖完成的是比較爲該客戶檢索的ServiceIDs列表,並查看該組合是否與任何定義的pacakges(即ServiceIDs的組合)匹配,如果是這樣,則報告該客戶的哪個軟件包具有。
我比較努力地知道從哪裏開始!我想我需要首先爲每個包創建一些serviceID列表(而不是我當前的KeyValuePairs(在字典中)),然後遍歷這些包並將這些服務列表與列表進行比較客戶有哪些服務?
這裏使用可能不是最合適的數據類型 - 在許多情況下,我指的是一個「邏輯」列表,而不是一個C#列出對象 - 我可以任意使用的數據類型是適當:)
任何幫助非常感激!
編輯 - 有人建議我在SQL中整理這些信息,而不是在我的C#應用程序中。這似乎是一個好主意,下面的答案之一使我接近。然而,有一些「商業規則」可以確定一個軟件包是否是對一個較低的軟件包或一個軟件包的「升級」,這是一件非常複雜的事情。
我越努力使這項工作越多,我認爲我咬掉的東西越多,我就可以咀嚼!我是,試着正確設計,以便將來對服務或軟件包所做的任何更改都能輕鬆處理 - 這些更改不太可能,但可能。但是,從目前爲止所看到的選項中進行硬編碼將更加容易!
編輯2 - 我一直在努力解決這個問題,並建議我爲每個包分配一個「權重」和「組」。這些組在那裏確保客戶只能從每個組中獲得一個包,並且權重在那裏以確保只返回「最高」級包。將這與@MarceloCantos的查詢結合使用,意味着我應該只能返回每個組的「最高」權重包 - 這看起來可能符合應用程序的要求!
感謝迄今爲止幫助過的所有人 - 我驚訝地發現響應的響應速度以及響應的質量。我會給出一個去看看我如何繼續。
我們在討論服務,包裹,每個服務的典型包裹等等時,我們討論的是什麼樣的大小數字? – AakashM
@AakashM - 好點。服務和軟件包總是相對較小 - 目前有7種服務可以分爲8種軟件包 - 這種情況將會增長,但不會顯着。到目前爲止,每個軟件包的最大服務數量是6個。客戶數量將增長到數千個。然而,這些'計算'只需要每月進行一次。 – JimmE
這是一次「一次性」的工作來確定每個客戶擁有哪些軟件包,或者您需要在有人訪問該網站時做到這一點?正如Dave在下面提出的那樣,將數據存儲在數據庫中會更有意義 - 今天就完成一次,然後確保它已更新,而且您再也無需再次處理它。 –