如何避免多次运行相同的循环?

时间:2015-03-27 13:07:47

标签: c# foreach while-loop

这对我来说是个大问题,因为我无法摆脱循环。我只在listDataReport.Count进入了1.但是在foreachbeginDate(例如:10/01/2010)到endDate(今天),我的文件写入次数为日期从开始到结束。

我想要的只是listDataReport

中特定日期的一次写作
listDataReport = blReports.GetDataClientes(beginDate, endDate);

string dateSelected = string.Empty;    
while (beginDate < endDate)
{
    foreach (var item in listDataReport)
    {
        FileCreated.WriteLog(item.NmbrCliLeg + "|" + item.NmbCliProf + "|" + item.Namsur + "|" + item.Mail, false);
        dateSelected= item.DateUp;
    }
    beginDate = beginDate.AddDays(1);
}
log.WriteLog("Clients up date: " + dateSelected + ":" + listDataReport.Count);    

它会在beginDate - endDate之间重复多天。如果我只在listDataReport发现了一个客户端。

正如您所看到的,FileCreated.WriteLog创建了一个.txt,它将数据客户端写入此处就是问题所在。在创建.log文件的log.WriteLog中,没有问题。我将展示我从这两个文件中获得的内容。

在日志中:

---***--- Execution Initiated: 27/03/2015 09:44:40 a.m.
27/03/2015 09:44:50 a.m. - Clients up date 03/19/2015: 1
===***=== Execution Ended: 03/27/2015 09:44:50 a.m.

但现在在.txt文件(Datefile03272015.txt)中:

0123456789|7976967|NAME SURNAME|somemail@mail.com
0123456789|7976967|NAME SURNAME|somemail@mail.com
0123456789|7976967|NAME SURNAME|somemail@mail.com
0123456789|7976967|NAME SURNAME|somemail@mail.com

每天都会运行所有作业,并且每天都会创建一个.txt文件。这里的.log文件无关紧要。

1 个答案:

答案 0 :(得分:3)

使用关键字break来摆脱循环:

https://msdn.microsoft.com/en-us/library/ttw7t8t6.aspx

int[] list = [1, 2, 3, 4, 5, 6, 7, 8];

foreach(int item in list)
{
    Console.WriteLine(item);
    if (item == 5)
        break;
}

输出:

1
2
3
4
5