在我的應用程序中,我有一個'PortalItemTag'對象列表。 PortalItemTag將門戶,項目和標籤關聯在一起。我被要求採用屬於每個PortalItemTag對象的PortalItemTagTypeId並將該值複製到Tag對象上的PortalItemTagTypeId屬性。如何通過值將項目列表中的項目分配給新對象?
作爲參考,一個PortalItemTag對象由一個門戶對象,一個Item對象,一個Tag對象和一些附加屬性組成。
當我將每個屬性分配給標籤時,我意識到我的標籤列表已通過引用分配給了PortalItems。 foreach循環內的第一行代碼執行此操作。
而不是創建一個對Tag對象的引用,我想分配一個Tag對象的新實例。是否有捷徑可尋?
foreach (var portalItemTag in portalItemTags)
{
var tag = _tags.FirstOrDefault(_ => _.Id == portalItemTag.TagId);
portalItemTag.Tag = tag;
if (portalItemTag.Tag != null)
portalItemTag.Tag.PortalItemTagTypeId = portalItemTag.PortalItemTagTypeId;
}
退出上面的循環後,我想看到兩個記錄具有相同的標記,但不同的PortalItemTagTypeId's。
PortalItemTag - Object 1
PortalId: 1
ItemId: 1
PortalItemTagTypeId: 1
Tag:
{
Id:1
Name: Sample Tag
PortalItemTagTypeId:1
}
PortalItemTag - Object 2
PortalId: 1
ItemId: 1
PortalItemTagTypeId: 2
Tag:
{
Id:1
Name: Sample Tag
PortalItemTagTypeId:2
}
然而,此刻的最後分配贏,因爲我引用標記對象,並改變他PortalItemTagTypeId引用的對象,改變它都PortalItemTags上。
有沒有人有任何想法,這可能會實現而沒有太多的痛苦?我試圖避免實施'克隆()'方法,但會這樣做,如果它是唯一的方法...
在此先感謝!
爲了清楚起見編輯樣本對象。
什麼是在上面的代碼中的_tags'? –
您聲明您希望「獲取屬於每個」PortalItemTag「對象的'PortalItemTagTypeId'並將該值複製到'Tag'對象上的'PortalItemTagTypeId'屬性,但您的示例'PortalItemTag'對象沒有一個單獨的'PortalItemTagTypeId'屬性。 –
_tags是一個標籤列表。每個標籤都有一個Id和一個What列。 – Zoop