使用foreach循环将项目动态添加到列表

时间:2019-08-25 01:02:29

标签: asp.net asp.net-mvc-5

我有一个模型InvoiceViewModel,它的属性Items是一个列表。我想在Items属性上运行foreach并将其动态添加到列表中。

InvoiceViewModel.cs

public class InvoiceViewModel
{
    ...
    public List<ItemsViewModel> Items { get; set; }

}

ItemsViewModel.cs

public class ItemsViewModel
{
    public string Name { get; set; }
    public string UnitPrice { get; set; }
    public string Quantity { get; set; }
    public string TotalAmount { get; set; }
}

我正在使用以下代码将InvoiceViewModel中的项目动态添加到列表中。

    var Items = InvoiceViewModel.Items;
    var ItemsList = new List<ItemsViewModel>
    {
        foreach (var item in Items)
        {
            new ItemsViewModel { Name = item.Name, UnitPrice = item.UnitPrice, Quantity = item.Quantity, TotalAmount = item.TotalAmount };
        }
    };

上面的代码抛出错误,} expected

1 个答案:

答案 0 :(得分:4)

好的。因此,在初始化期间,您位于对象内部。初始化列表时,对象初始化程序希望您提供T类的列表。您应该做的是:

var ItemsList = new List<ItemsViewModel>();

foreach (var item in InvoiceViewModel.Items)
{
    ItemsList.Add(new ItemsViewModel { Name = item.Name, UnitPrice = item.UnitPrice, Quantity = item.Quantity, TotalAmount = item.TotalAmount });
}

或者您可以使用LINQ表达式来初始化对象,如下所示:

var ItemsList = InvoiceViewModel.Items
                .Select(item => new ItemsViewModel { Name = item.Name, UnitPrice = item.UnitPrice, Quantity = item.Quantity, TotalAmount = item.TotalAmount })
                .ToList();

PS:代码未经测试,因此可能需要一些修饰。