如何在IEnumerable中插入新项
本文关键字:插入 新项 class IEnumerable | 更新日期: 2023-09-27 18:19:18
我有一个类,它包含:
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;
}
我做错了什么?
正如@gunr2171所说,你不能插入到IEnumerable中,但是你可以插入到list中。
简单地创建你的列表作为一个变量,插入你的数据,然后将其分配给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
}
不能插入IEnumerable<>
。它唯一能做的就是获得枚举(例如通过使用foreach
)。
有多个集合类实现了IEnumerable<>
并提供了插入的方法。List<>
和Collection<>
。
IEnumerable没有Add()方法。IEnumerable的目的是用于枚举(循环)遍历的项。IEnumerable的一些具体实现(例如List)有一个Add()方法,而有些则没有。
如果需要添加项,可以将Segments属性更改为IList。