如何将新项插入IEnumerable <class> </class>

时间:2014-08-25 15:54:11

标签: c# ienumerable

我有一个包含以下内容的类:

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;
}

我做错了什么?

3 个答案:

答案 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。