在我的应用程序中,我有一个'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