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

本文关键字:列表 类型 添加 另一个 | 更新日期: 2023-09-27 18:34:08

我有两个类类型列表,这两个类都有一些共同的属性。我们如何将一个列表值添加到另一个列表值。我已经尝试过使用 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。

任何人都可以帮助我;

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

你不能

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

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

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

将接口添加到您的 TagViewModel & Tag

public class Tag: ITag
{
    ...
}
public class TagViewModel : Tag
{
    ...
}

并创建接口列表

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

您现在可以在其中添加 ITag 接口(因此也可以将 TagViewModel 作为 Tag)

之后,您可以使用以下方法检查项目是Tag还是TagViewModel:

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