如何在asp.net MVC中使用foreach循环使用groupby子句的Index属性?

时间:2013-12-17 14:26:44

标签: asp.net-mvc-4

我正在尝试运行两个foreach循环。第一个将使用group by子句对所有元素进行分组,然后,根据该分组,我想使用group by子句的index属性运行另一个循环。如何实现?

这是我到目前为止所得到的:

foreach (var amount in
    Model.DebitCreditNoteEntries.GroupBy(x => x.AccountName.AccountHead))
    {
        for (int i = 0; i <= """use index attribute of groupby""" i++)
        {
           ////index attribute contains total no of repeated fields.
        }
    }

2 个答案:

答案 0 :(得分:3)

如果您的内部循环只是循环遍历组中的每个项目,那么以下应该这样做。使用Count属性。

foreach (var amount in Model.DebitCreditNoteEntries.GroupBy(x => x.AccountName.AccountHead))
{
    for (int i = 0; i <= amount.Count i++)
    {
       ////index attribute contains total no of repeated fields.
    }
}

你也可以这样做:

var grouping = Model.DebitCreditNoteEntries.GroupBy(x => x.AccountName.AccountHead);
foreach (var amount in grouping)
{
    foreach(var creditNoteEntry in amount)
    {
       ////index attribute contains total no of repeated fields.
    }
}

答案 1 :(得分:2)

如果我理解你的问题,那么你想要的是IGroupable的关键。 Key是您按其分组的值。

如果您的车辆类别为&#34;类型&#34;财产可能是&#34; car&#34;或&#34;卡车&#34;

并且您使用了GroupBy(&#34; Type&#34;)然后组中的所有车辆的钥匙将是&#34; car&#34;  和所有卡车的小组的关键是&#34;卡车&#34;

  foreach (var amount in
        Model.DebitCreditNoteEntries.GroupBy(x => x.AccountName.AccountHead))
        {
            for (int i = 0; i <= amount.Key i++)
            {
               ////index attribute contains total no of repeated fields.
            }
        }

现在,如果你需要一个实际的索引,你可以这样做:

list.GroupBy(c => c.AccountName.AccountHead)
    .Select((AccountName, ind) =>
    new
    {
        Name = details.Key,
        data= AccountName,
        Index = ind
    });

这将是每个组的实际索引。单个Igropable没有实现你必须制作自己的索引。

我在移动电话上对不起标点符号和语法很差。