C# 如何在IEnumerable
我有一个类,其中包含:C# 如何在IEnumerable,c#,ienumerable,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;
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中,但你可以插入到列表中 只需将列表创建为变量,在其中插入数据,然后将其指定给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没有Add方法。IEnumerable用于可以循环枚举的项。例如,IEnumerable List的一些具体实现有一个Add方法,而有些没有 如果需要添加项,可以将Segments属性更改为IList 不能插入到IEnumerable中。它所能做的唯一一件事就是使用foreach进行枚举
有多个集合类实现IEnumerable并提供插入方法。我想到了列表和集合。您不能在IEnumerable中插入项。这就是界面的要点。你可以插入一个列表,但是你必须告诉编译器这个对象实际上是一个列表。IEnumerable只是可读的我试着这样做:在哪里?您似乎在循环片段,但从未尝试添加一个@SriramSakthivel OP试图更新每个项的一些属性我想他是在尝试为请求中的每个项在枚举中创建一个新项?