我有一个模型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
答案 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:代码未经测试,因此可能需要一些修饰。