如何在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;
}

我做错了什么?

如何在IEnumerable<class>中插入新项

正如@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。