我有一个包含以下内容的类:
public class BigClass
{
public class Class1
{
public class SegmentClass1
{
public string atribb1 { get; set; }
public string attrib2 { get; set; }
public DateTime attrib3 { get; set; }
}
public IEnumerable<SegmentClass1> Segments { get; set; }
}
}
如何在IEnumerable中添加一些值: 我试着这样做:
private static nameSpace.BigClass.Class1 Request(JObject request)
{
nameSpace.BigClass.Class1 bigRequest = new BigClass.Class1();
bigRequest.Segments = new List<BigClass.Class1.SegmentClass1>();
foreach (var item in bigRequest.Segments)
{
item.atrrib1 = request.GetValue("attrib3").Value<DateTime>();
item.attrib2 = request.GetValue("attrib2").Value<string>();
item.attrib3 = request.GetValue("attrib1").Value<string>();
}
return bigRequest;
}
我做错了什么?
答案 0 :(得分:2)
正如@ gunr2171所说,你不能插入IEnumerable,但你可以插入一个列表。
只需将列表创建为变量,将数据插入其中,然后将其分配给Segments属性。
private static nameSpace.BigClass.Class1 Request(JObject request)
{
nameSpace.BigClass.Class1 bigRequest = new BigClass.Class1();
var internalList = new List<BigClass.Class1.SegmentClass1>();
internalList.Add(new SegmentClass1
{
attrib1 = request.GetValue("attrib1").Value<DateTime>(),
attrib2 = request.GetValue("attrib2").Value<string>(),
attrib3 = request.GetValue("attrib3").Value<string>()
});
bigRequest.Segments = internalList;
return bigRequest
}
答案 1 :(得分:1)
您无法插入IEnumerable<>
。它唯一能做的就是枚举(例如使用foreach
)。
有多个集合类实现IEnumerable<>
并提供插入方法。想到List<>
和Collection<>
。
答案 2 :(得分:0)
IEnumerable上没有Add()方法。 IEnumerable的目的是用于可以枚举(循环)的项目。 IEnumerable(例如List)的一些具体实现具有Add()方法,而有些则没有。
如果您需要向其中添加项目,可以将Segments属性更改为IList。