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

C# 如何在C中向另一个类类型列表添加类类型列表值,c#,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;

我有两个类类型列表,在这两个类中都有一些公共属性。如何将一个列表值添加到另一个列表值。我尝试过使用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>();
清单二

List<Tag> list2 = new List<Tag>();
我必须将列表2的值添加到列表1


任何人都可以帮助我

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

我想您可以将对象抽象到一个接口,然后添加接口

public interface ITag
{
    int TagId { get; }
    string TagName { get; }
    string TagSlug { get; }
}
将接口添加到标记ViewModel&Tag

public class Tag: ITag
{
    ...
}

public class TagViewModel : Tag
{
    ...
}
并创建接口的列表

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

我不认为他真的希望他们都在同一张名单上。TagViewModel列表将是所有标记的表示形式,其中添加了一个字段,可能是属性的INotifyPropertyChanged实现。这是一个很好的假设,但我想他只是问如何创建一个同时包含这两个属性的列表:是的,他这样做了。这个问题的答案很好,我肯定没有投反对票。我没有说,也没有假设你投了反对票:尽管知道为什么会投反对票会很有帮助:
foreach (var item in list1)
{
    if (item is TagViewModel) 
    {
    }
    else if (item is Tag) 
    {
    }
    else
    {
        // something else but also at least ITag
    }
}