“列表”具有类似于枚举器 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 方法:
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
}
我会使用这种方法而不是前者。