如何在C#中将类类型列表值添加到另一个类类型列表

时间:2014-12-14 13:14:55

标签: c#

我有两个类类型列表,在这两个类中都有一些共同的属性。我们如何向其他人添加一个列表值。我已经尝试使用foreach循环,但我无法访问第二类属性。

public class TagViewModel
{
    public int TagId { get; set; }
    public string TagName { get; set; }
    public string TagSlug { get; set; }
    public bool IsChecked { get; set; }
}

public class Tag
{
    public int TagId { get; set; }
    public string TagName { get; set; }
    public string TagSlug { get; set; }
}

使用上面的类我创建了两个列表

列出我

List<TagViewModel> list1 = new List<TagViewModel>();

清单II

List<Tag> list2 = new List<Tag>();

我必须将list2中的值添加到list1。

任何人都可以帮助我;

2 个答案:

答案 0 :(得分:0)

你不能这样做。这是两种不同的类型。您可以做的是创建TagViewModel的新实例,从Tag实例复制所有属性,并将新的TagViewModel实例插入到第一个列表中。

答案 1 :(得分:0)

我猜你可以将对象抽象到接口,然后添加接口吗?

public interface ITag
{
    int TagId { get; }
    string TagName { get; }
    string TagSlug { get; }
}

将接口添加到TagViewModel&amp;标签

public class Tag: ITag
{
    ...
}

public class TagViewModel : Tag
{
    ...
}

并创建接口列表

List<ITag> list1 = new List<ITag>();

您现在可以在其中添加ITag界面(以及TagViewModel作为标签)

然后你可以检查一个项目是Tag还是TagViewModel:

foreach (var item in list1)
{
    if (item is TagViewModel) 
    {
    }
    else if (item is Tag) 
    {
    }
    else
    {
        // something else but also at least ITag
    }
}