Cannot apply index with [ ] to an expression of type icollection MVC view ASP.NET cor
problem
cannot apply index with [ ] to an expression of type Icollection mvc view asp.net core 2.1
Code:
public class SalesHeader
{
public SalesHeader()
{
}
public int SalesYear { get; set; }
public int BranchCode { get; set; }
public ICollection<SalesFooter> SalesFooters { get; set; }
}
What I have tried:
Code:
@for (var i = 0; i < Model.SalesFooters.Count; ++i)
{
<tr>
<td>
@Html.EditorFor(f => f.SalesFooters[i].ItemCode)
</td>
<td>
@Html.EditorFor(f => f.SalesFooters[i].Quantity)
</td>
<td>
@Html.EditorFor(f => f.SalesFooters[i].UnitPrice)
</td>
</tr>
}
it show my in for loop above compile error
cannot apply index with [ ] to an expression of type Icollection mvc view asp.net core 2.1
Place Of ERROR
the error show on view Edit under f.salesfooter[i] on for loop because indexing is applied to list
and i use collection
my question How to convert collection to list
or
How using indexing in collection ?
Re: Cannot apply index with [ ] to an expression of type icollection MVC view ASP.NET
Quote:
Originally Posted by
engbarbary
How to convert collection to list
There's no need.
Quote:
Originally Posted by
engbarbary
How using indexing in collection ?
You can't.
The solution is to use a 'foreach' loop rather than a 'for' loop. You should do the same even if the property was an IList<T>. If the point of your loop is to access each item in a collection, use a 'foreach' loop because that is exactly what it does. Use a 'for' loop only if you need to use the loop counter for something other than indexing the collection, e.g. indexing two concurrent collections.