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
之间有什么关系?@gobes
myList
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();
};