C# 如何使用foreach-C创建列表#
我有这门课:C# 如何使用foreach-C创建列表#,c#,list,foreach,C#,List,Foreach,我有这门课: public class JsonObj { public string name { get; set; } [JsonProperty(NullValueHandling = NullValueHandling.Ignore)] public List<JsonObj> children { get; set; } [JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public class JsonObj
{
public string name { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public List<JsonObj> children { get; set; }
[JsonProperty(NullValueHandling = NullValueHandling.Ignore)]
public int? size { get; set; }
}
假设myList
有许多对象MyObj
现在我正试图创建一个大的JsonObj,它的孩子是myList成员。这就是我到目前为止所做的:
var root = new JsonObj
{
name = "ROOT",
children = new List<JsonObj>()
{
//I suppose I need to use foreach here, but I don't know how to do it.
}
};
var root=new JsonObj
{
name=“ROOT”,
children=新列表()
{
//我想我需要在这里使用foreach,但我不知道怎么做。
}
};
如何在此处使用该列表的循环创建对象?谢谢。您不能将foreach用作初始值设定项。在JsonObj之前创建列表,并将其分配给子级,或者使用LINQ。以下是一些例子:
var children = new List<JsonObj>();
foreach ( var child in myList )
{
children.Add(new JsonObj
{
name = child.Name,
size = child.Number
});
}
var root = new JsonObj
{
name = "ROOT",
children = children
};
下面是一个dotnetfiddle示例。您不能在构造函数实例化中使用foreach。在调用此代码之前创建列表,并将列表分配给children属性。为什么需要foreach?您是否有某种类型的集合?myList的类型是什么?
JsonObj
和MyObj
之间有什么关系?@gobesmyList
是MyObj
的类型JsonObj
和MyObj
之间没有关系。我只需要将myObj
对象转换为JsonObj
“假设myList
有许多myObj
对象,myList
不是一个myObj
实例列表吗?这是一个获取其子对象的函数。他没有解释孩子们从哪里来,所以这是psudeo代码。你是说myList
而不是GetMyChildren()
?问题是不清楚OP在问什么。我的理解是,他在JsonObj
s列表和MyObj
s列表之间有一个映射问题……好吧,现在使用myList
而不是GetMyChildren()
,如果OP的孩子在myList
中。我照你说的做了。但它给出了以下错误:参数1:无法从“WebApplication2.Controllers.JsonObj”转换为“int”
var children = new List<JsonObj>();
foreach ( var child in myList )
{
children.Add(new JsonObj
{
name = child.Name,
size = child.Number
});
}
var root = new JsonObj
{
name = "ROOT",
children = children
};
var root = new JsonObj
{
name = "ROOT",
children = myList.Select(child => new JsonObj
{
name = child.Name,
size = child.Number
}).ToList();
};