C# 如何向foreach循环中的现有数组/ienumerable集合添加

C# 如何向foreach循环中的现有数组/ienumerable集合添加,c#,asp.net,asp.net-mvc,C#,Asp.net,Asp.net Mvc,在我的代码中,我有一个在foreach循环中循环的id列表 ID与一个DB记录相关,我试图在单个数组中检索与每个DB记录相关的项,然后以JSON返回 这是我目前所拥有的,但它只返回属于最后一个ID的项目 List<int> IDs = new List<int>(bomIds.Split(',').Select(int.Parse)); IEnumerable<BOMItemSummary> bomItemArray = Enumerable.Empty<

在我的代码中,我有一个在foreach循环中循环的id列表

ID与一个DB记录相关,我试图在单个数组中检索与每个DB记录相关的项,然后以JSON返回

这是我目前所拥有的,但它只返回属于最后一个ID的项目

List<int> IDs = new List<int>(bomIds.Split(',').Select(int.Parse));
IEnumerable<BOMItemSummary> bomItemArray = Enumerable.Empty<BOMItemSummary>();
foreach (var value in IDs)
{


    BOM bom = db.BOMs.Find(value);
    if (bom != null)
    {
        // Got project, get spec items

        bomItemArray = bom.BOMLineItems.Select(bomItem => new BOMItemSummary
        {
            bomItem = bomItem,
            //partNumber = (bomItem.ProductLink.SupplierProductCode != null) ? bomItem.ProductLink.SupplierProductCode : ""
        });


    }
}
jsonResult = Json(new
{
    apiStatus = Utils.Json.JSON_returnStatusSuccess,
    //bomTotal = (bom.BOMValue.HasValue ? bom.BOMValue.Value.ToString("0.00") : "0.00"),
    bomItemArray = bomItemArray,
}, JsonRequestBehavior.AllowGet);
List id=新列表(bomIds.Split(',')。选择(int.Parse));
IEnumerable bomItemArray=Enumerable.Empty();
foreach(id中的var值)
{
BOM=db.BOMs.Find(值);
如果(bom!=null)
{
//获取项目,获取规范项
bomItemArray=bom.BOMLineItems.Select(bomItem=>newbomitemsummary
{
bomItem=bomItem,
//零件号=(bomItem.ProductLink.SupplierProductCode!=null)?bomItem.ProductLink.SupplierProductCode:“
});
}
}
jsonResult=Json(新的
{
apiStatus=Utils.Json.Json\u returnStatusSuccess,
//bomTotal=(bom.BOMValue.HasValue?bom.BOMValue.Value.ToString(“0.00”):“0.00”),
bomItemArray=bomItemArray,
},JsonRequestBehavior.AllowGet);
在此之后,我需要在产品相同的地方选择不同的值,但合并数量,因此解决方案应该考虑到这一点

为什么使用
IEnumerable
?这与
列表无关。AddRange

List<BOMItemSummary> bomItems = new List<BOMItemSummary>();
...

var bomItemsForId = bom.BOMLineItems.Select(bomItem => new BOMItemSummary
{
    ...
});
bomItems.AddRange(bomItemsForId);
List bomItems=new List();
...
var bomItemsForId=bom.BOMLineItems.Select(bomItem=>new BOMItemSummary
{
...
});
bomItems.AddRange(bomItemsForId);
为什么要使用
IEnumerable
?这与
列表无关。AddRange

List<BOMItemSummary> bomItems = new List<BOMItemSummary>();
...

var bomItemsForId = bom.BOMLineItems.Select(bomItem => new BOMItemSummary
{
    ...
});
bomItems.AddRange(bomItemsForId);
List bomItems=new List();
...
var bomItemsForId=bom.BOMLineItems.Select(bomItem=>new BOMItemSummary
{
...
});
bomItems.AddRange(bomItemsForId);

您每次在foreach循环中都要替换
bomItemArray
。您应该使用
bomItemArray.Append
向其中添加新项目

我建议将
bomItemArray
的类型更改为
List

var bomItemArray = new List<BOMItemSummary>();

每次在foreach循环中,您都要替换
bomItemArray
。您应该使用
bomItemArray.Append
向其中添加新项目

我建议将
bomItemArray
的类型更改为
List

var bomItemArray = new List<BOMItemSummary>();

您可以使用get代码提取方法中所需的信息,并使用
yield return
获取
IEnumerable


我认为它会更干净。

您可以使用get代码提取方法中所需的信息,并使用
yield return
获取
IEnumerable

我想它会更干净