我目前正在使用MVC從3個不同的數據庫中搜索並返回結果。每個數據庫的結果被放入一個包含來自所有DB的公共字段的一組SoftwareLight
對象中,以及一個Context
屬性以指示結果來自哪個數據庫。到目前爲止,這部分工作很好。將列表中的對象與枚舉聯繫起來
現在我要做的是將每個具有相同名稱但來自不同上下文的SoftwareLight
對象合併爲一個條目。理想情況下,此「合併」條目的Context
屬性也將包含所有發現它的上下文...
給你一個這些結果集可能看起來像什麼樣的小例子,以及我想要最終實現,請參閱下文。但主要是我的問題有以下幾點:
- 我怎樣才能讓
Context
酒店在一次接受多個枚舉項? (我已經看到這樣做使用單個&
或單個|
和後來檢查使用Enum.HasFlag();
方法?) - 如何有效地將具有相同名稱的結果合併/合併到單個條目中?
[EDIT]根據要求,我添加了SoftwareLight類和Context enum聲明。
public class SoftwareLight : IEquatable<SoftwareLight>
{
public string Name { get; set; }
public string Version { get; set; }
public int? Installs { get; set; }
public AppContext Context { get; set; }
public bool External { get; set; }
}
[Flags]
public enum AppContext
{
NET,
LOCAL,
LICENSES
}
的例子當前搜索代碼:
例 //Current searching method...
NET_DATA db1 = new Model.NET_DATA();
LOCAL_DATA db2 = new Model.LOCAL_DATA();
LICENSING_DATA db3 = new Model.LICENSING_DATA();
List<SoftwareLight> finds = new List<SoftwareLight>();
//SoftwareLight items returned have their Context Property set to 'NET'
finds.AddRange(db1.Find(searchterms));
//SoftwareLight items returned have their Context Property set to 'LOCAL'
finds.AddRange(db2.Find(searchterms));
//SoftwareLight items returned have their Context Property set to 'LICENSES'
finds.AddRange(db3.Find(searchterms));
finds = finds.OrderBy(a => a.Name).ToList();
//HOW DO I COMBINE THEM HERE?
當前結果,搜索術語中 「Dreamweaver」:
例|---------------------------------------------------------| | Product Name | Context | Public Facing | Installs | |---------------------------------------------------------| | Adobe Dreamweaver | NET | No | 23 | |---------------------------------------------------------| | Adobe Dreamweaver | LOCAL | No | 7 | |---------------------------------------------------------| | Adobe Dreamweaver | LICENSES | No | 9 | |---------------------------------------------------------|
想結果,搜索術語Dreamweaver:
|---------------------------------------------------------------------| | Product Name | Context | Public Facing | Installs | |---------------------------------------------------------------------| | Adobe Dreamweaver | NET, LOCAL, LICENSES | No | 39 | |---------------------------------------------------------------------|
你能澄清你的問題,通過(1)提供的聲明(2)指定上下文爲「NET」的「Adobe Dreamweaver」是否可能具有「Public Facing」=否,但上下文「LOCAL」具有「Public Facing」= Yes? – Alex
所需信息已添加到問題中。謝謝! – MaxOvrdrv