我必须将一个以上的列表加入一个列表中。这个问题似乎很常见,但是我的问题可能完全不同。 因为,我有3节课。我已经基于这些类创建了3个列表
List<QTM> lstQTM = new List<QTM>();
List<QTMMain> lstQTMmain = new List<QTMMain>();
List<QTMStats> lstQTMStats = new List<QTMStats>();
这些类仅指示存储在该列表中的属性。 我创建了另一个列表
List<QTMList> lstQTMlist = new List<QTMList>();
此QTMList也是一个类。这个班有
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#不可发音的'lstQTMlist.lstQTMmain'成员不能像 方法
以此类推。
您能不能请任何人给我提示以解决我的问题?
答案 0 :(得分:4)
您应该使用进行设置。
"_index": "testrest",
"_type": "testrest",
答案 1 :(得分:1)
您不能像方法一样调用属性,消息非常清晰。
qtmList = new QTMList();
例如,您不能执行此操作:
qtmList.QTMMain(lstQTMmain)
;
您可以像这样将1stQtMain
添加到QTMMain
:
qtmList.QTMMain.AddRange(lstQTMmain)
您使用AddRange
将对象列表添加到列表中。
答案 2 :(得分:0)
该错误是由您使用QTMList
类的字段的方式引起的。您正在使用
它们就像方法一样,即在方括号内传递参数。这就是您调用方法的方式。
为了将值分配给类的字段或属性,您只需使用=
运算符。
因此,您的代码可以简化为:
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>();
}
答案 3 :(得分:-1)
您可以尝试以下方法:
qtmList = new QTMList();
qtmList.QTMMain=lstQTMmain;
qtmList.QTM=lstQTM;
qtmList.QTMStats=lstQTMStats;
这样做,新列表(QTMMain,...)包含已分配列表(lstQTMmain,...)的项目的副本。您可以通过将以下构造函数添加到QTMList来简化代码:
qtmList = new QTMList();
qtmList.QTMMain = new List<QTMStats>(lstQTMmain);
qtmList.QTM = new List<QTM>(lstQTM);
qtmList.QTMStats = new List<QTMMain>(lstQTMStats);
如果您不想复制列表内容,则应将列表分配给属性。
public QTMList(List<QTM> qtm, List<QTMStats> qtmstats, qtmmain)
{
QTMMain = new List<QTMStats>(lstQTMmain);
QTM = new List<QTM>(lstQTM);
QTMStats = new List<QTMMain>(lstQTMStats);
}