C#使用foreach访问层次结构的子成员

C#使用foreach访问层次结构的子成员,c#,razor,asp.net-core,tag-helpers,C#,Razor,Asp.net Core,Tag Helpers,我正在尝试为下面的html razor进行Foreach工作。在一天结束时,我希望ShoppingCart成为Cartline的列表。我想去掉[0]语句,并使其变为变量。任何解决方案或优化方法都会有所帮助。也可以随意编辑该类 class ShoppingCart { public IList<CartLine> Items { get; } = new List<CartLine>(); public ShoppingCart() {} } publi

我正在尝试为下面的html razor进行Foreach工作。在一天结束时,我希望ShoppingCart成为Cartline的列表。我想去掉[0]语句,并使其变为变量。任何解决方案或优化方法都会有所帮助。也可以随意编辑该类

class ShoppingCart
{
    public IList<CartLine> Items { get; } = new List<CartLine>();

    public ShoppingCart() {}
}

public class CartLine
{
    public int CartLineId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
}

@model IEnumerable<ShoppingCart>
@foreach (var item in Model)
{
   <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Items[0].Product)
        </td>
类购物车
{
公共IList项{get;}=new List();
公共购物车(){}
}
公共类CartLine
{
公共int CartLineId{get;set;}
公共产品产品{get;set;}
公共整数数量{get;set;}
}
@模型IEnumerable
@foreach(模型中的var项目)
{
@Html.DisplayFor(modelItem=>item.Items[0].Product)

所以您需要一个嵌套的foreach:

@foreach (var cart in Model)
{    
    @foreach (var line in cart.Items )
    {
        @Html.DisplayFor(modelItem => line.Product) 
    }
}

因此,您需要一个嵌套的foreach:

@foreach (var cart in Model)
{    
    @foreach (var line in cart.Items )
    {
        @Html.DisplayFor(modelItem => line.Product) 
    }
}

迭代列表元素,而不是类:

class ShoppingCart
{
    public IList<CartLine> Items { get; } = new List<CartLine>();

    public ShoppingCart() {}
}

public class CartLine
{
    public int CartLineId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
}

@model ShoppingCart
@foreach (var item in Model.Items)
{
   <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Product)
        </td>
类购物车
{
公共IList项{get;}=new List();
公共购物车(){}
}
公共类CartLine
{
公共int CartLineId{get;set;}
公共产品产品{get;set;}
公共整数数量{get;set;}
}
@购物车模型
@foreach(Model.Items中的var项)
{
@DisplayFor(modelItem=>item.Product)

迭代列表元素,而不是类:

class ShoppingCart
{
    public IList<CartLine> Items { get; } = new List<CartLine>();

    public ShoppingCart() {}
}

public class CartLine
{
    public int CartLineId { get; set; }
    public Product Product { get; set; }
    public int Quantity { get; set; }
}

@model ShoppingCart
@foreach (var item in Model.Items)
{
   <tr>
        <td>
            @Html.DisplayFor(modelItem => item.Product)
        </td>
类购物车
{
公共IList项{get;}=new List();
公共购物车(){}
}
公共类CartLine
{
公共int CartLineId{get;set;}
公共产品产品{get;set;}
公共整数数量{get;set;}
}
@购物车模型
@foreach(Model.Items中的var项)
{
@DisplayFor(modelItem=>item.Product)

缩写为只显示循环,你在其中构建html必须有一个更简单的方法,我只是想创建一个同义词(cartline列表)=ShoppingCart,现在我必须进行双foreach,希望有一个C#库函数可以创建同义词。我不能这样做吗?使用ShoppingCart=IEnumerable;缩写为只显示循环,你在其中构建html必须有一个更简单的方法,我只是尝试创建同义词(Cartline列表)=ShoppingCart,现在我必须进行双foreach,希望有一个C#库函数可以创建同义词,我不能这样做吗?使用ShoppingCart=IEnumerable;