“列表”具有类似于枚举器 MoveNext 方法的内容

本文关键字:方法 MoveNext 枚举 列表 类似于 | 更新日期: 2023-09-27 18:36:55

我正在构建一个程序,在其中读取文件并将文件的每一行放入对象列表中。

   List<DataRecord> vListOfRecords = new List<DataRecord>();

早些时候我做了同样的程序,但我被指示将数据读取到一个对象中并将这些对象放入一个列表中<>,请不要问为什么。 这样我就可以对项目进行排序。

无论如何,我

正在尽最大努力从我提供的链接中模仿我的循环,但我找不到将布尔值设置为 List.MoveNext() 方法的方法。 那么有没有一种带有列表的方法可以做到这一点?

或者有没有办法打破我没有看到的这个while循环?

    //Sort list by control vaiable.
        if (control == "1")
        {
            SortByAccount sortByAccount = new SortByAccount();
            vListOfRecords.Sort(sortByAccount);
            //set up control for account to switch
            var vAccount = string.Empty;
            foreach (DataRecord d in vListOfRecords)
            {

                do
                {
                    var vParseSettleMM = d.settleMM;
                    var vParseOpen = d.open;
                    var vParseBuy = d.buy;
                    var vParseSell = d.sell;
                    //adding temp variabels to sum
                    vSettleMMSum += vParseSettleMM;
                    vOpenSum += vParseOpen;
                    vBuySum += vParseBuy;
                    vSellSum += vParseSell;
                }
                //sets up when to loop
                while (vAccount == d.account);
                //After each Break need to print out Account name and sums from above.
                // Do printing here as part of the loop, at the very end of the loop code block.
                Console.WriteLine("--------------------------------------------------------");
                Console.WriteLine(vAccount + "  " + vSettleMMSum + "  " + vOpenSum + "   " + vBuySum + " " +
                    vSellSum);
                vWriteFile.WriteLine("{0},{1},{2},{3},{4}", vAccount, vOpenSum, vBuySum, vSellSum, vSettleMMSum);
                //reset sums for next loop
                vSettleMMSum = 0;
                vOpenSum = 0;
                vBuySum = 0;
                vSellSum = 0;
            }
        }

“列表”具有类似于枚举器 MoveNext 方法的内容

列表有一个基础枚举器,可用于获取 MoveNext 方法:

List<Something> somelist = new List<Something>();
List<Something>.Enumerator enumerator = somelist.GetEnumerator();
enumerator.MoveNext()

您无法按照要求的方式获得所需的结果(在 foreach 循环中使用 MoveNext)

您有两个简单的选择:

    在 for 循环
  • 中处理列表并按索引(而不是 foreach)访问项目,以便您可以嵌套两个 for 循环并随时中断(您的"MoveNext"将是索引++)
  • 使用 linq 对列表进行分组并对其进行分组处理

linq GroupBy 的示例代码:

var grouped = vListOfRecords.GroupBy(x=>x.account);
foreach(var group in grouped)
{
    foreach(var record in group)
    {
        //your sums
    }
    // your group outputs
}

我会使用这种方法而不是前者。