将多个 class 列表添加到一个 class 列表中

Adding more than one class list into one class list

我必须将多个列表加入一个 list.This 问题似乎很常见,但我的问题可能完全不同。 因为,我有 3 classes。我根据 classes

创建了 3 个列表
List<QTM> lstQTM = new List<QTM>();
List<QTMMain> lstQTMmain = new List<QTMMain>();
List<QTMStats> lstQTMStats = new List<QTMStats>();

这些 classes 仅表示存储在该列表中的属性。 我创建了另一个列表

 List<QTMList> lstQTMlist = new List<QTMList>();

这个QTMList也是一个class。这个class有

public class QTMList{
        public List<QTM> QTM { get; set; }
        public List<QTMStats> QTMStats { get; set; }
        public List<QTMMain> QTMMain { get; set; }
}

现在我尝试将 lstQTM、lstQTMmain 和 lstQTMStats 添加到 lstQTMlist 列表中。所以我用了

qtmList = new QTMList();
qtmList.QTMMain(lstQTMmain);
qtmList.QTM(lstQTM);
qtmList.QTMStats(lstQTMStats);

lstQTMlist.Add(qtmList);

我得到的错误是

C# Non-invocable 'lstQTMlist.lstQTMmain ' member cannot be used like a method

等等。

你能请任何人给我任何提示来解决我的问题吗?

您应该用于设置。

qtmList = new QTMList();
qtmList.QTMMain=lstQTMmain;
qtmList.QTM=lstQTM;
qtmList.QTMStats=lstQTMStats;

你可以试试这个:

qtmList = new QTMList();
qtmList.QTMMain = new List<QTMStats>(lstQTMmain);
qtmList.QTM = new List<QTM>(lstQTM);
qtmList.QTMStats = new List<QTMMain>(lstQTMStats);

通过这样做,新列表(QTMMain,...)包含已分配列表(lstQTMmain,...)的项目的副本。您可以通过向 QTMList 添加以下构造函数来简化代码:

public QTMList(List<QTM> qtm, List<QTMStats> qtmstats, qtmmain)
{
    QTMMain = new List<QTMStats>(lstQTMmain);
    QTM = new List<QTM>(lstQTM);
    QTMStats = new List<QTMMain>(lstQTMStats);
}

如果您不想要列表内容的副本,您应该将列表分配给属性。

qtmList = new QTMList();
qtmList.QTMMain = lstQTMmain;
qtmList.QTM = lstQTM;
qtmList.QTMStats = lstQTMStats;

错误是由您使用 QTMList class 字段的方式引起的。您正在使用 他们就像他们是方法,即在括号内传递参数。这就是您调用方法的方式。 为了给字段或 class 的 属性 赋值,您只需使用 = 运算符。 因此,您的代码可以简化为:

qtmList = new QTMList();
qtmList.QTMMain = new List<QTMMain>();
qtmList.QTM = new List<QTM>();
qtmList.QTMStats = new List<QTMStats>();

或者您可以在 QTMList 初始化时初始化列表:

public class QTMList{
    public List<QTM> QTM { get; set; } = new List<QTM>();
    public List<QTMStats> QTMStats { get; set; } = new List<QTMStats>();
    public List<QTMMain> QTMMain { get; set; } = new List<QTMMain>();
}

你不能像方法一样调用属性,消息很清楚。

qtmList = new QTMList();

例如,您不能这样做: qtmList.QTMMain(lstQTMmain);

您可以像这样将 1stQtMain 添加到 QTMMain

qtmList.QTMMain.AddRange(lstQTMmain)

您使用 AddRange 将对象列表添加到列表中。