簡體   English   中英

使用LINQ讀取多個文件

[英]Reading multiple files with LINQ

我正在使用LINQ從3個不同的csv文件讀取和顯示結果。 第一個文件是CustomerInfo。 第二個是PackagePrice,第三個是HolidayTrans。 我需要在基於startDate的列表框中顯示結果。 我的listBox僅顯示第一條記錄。 這是我的LINQ和for循環:

string[] myHolidayTransactionFile = File.ReadAllLines(@"c:\temp\HolidayTrans.csv");
            //create an undefined variable myQuery1
            //to read each line in the HolidayTrans file
            var myQuery1 = from myline in myHolidayTransactionFile
                           let myField = myline.Split(',')
                           let id = myField[0]
                           let startDate = myField[1]
                           let numOfAdults = myField[2]
                           let numOfKids = myField[3]
                           where cid == id       
                           orderby DateTime.Parse(startDate) descending
                           select new
                           {
                               cid,
                               startDate,
                               numOfAdults,
                               numOfKids
                           };


        lstInfo.Items.Add(string.Format(formatLine, "Start Date", "End Date", "Adult Amt", "Kid Amt"));
        foreach (var personRecord in myQuery1)
        {
            startTourDate = personRecord.startDate;                
           break;
        }
        //putting logic for getting break on a year every time before it changes
        foreach (var personRecord in myQuery1)
        {
            //personRecord StartDate is equal to the Start tour Date which is selected
            if (personRecord.startDate == startTourDate)
            {

                getNumofDaysTwinAdultPrSingleAdultPr(startTourDate, ref numOfDays, ref twoAdultPr, ref oneAdultPr);

                //performing calculations for endate adult amt and kid amt
                EndDate = Convert.ToDateTime(startTourDate).AddDays(numOfDays);

                if (int.Parse(personRecord.numOfAdults) == 2)
                {
                    adultAmt = twoAdultPr * 2;
                }
                if (int.Parse(personRecord.numOfAdults) == 1)
                {
                    adultAmt = oneAdultPr;
                }
                if (int.Parse(personRecord.numOfKids) == 2)
                {
                    kidsAmt = kidsPr * 2;
                }
                if (int.Parse(personRecord.numOfKids) == 1)
                {
                    kidsAmt = kidsPr;
                }
                if (int.Parse(personRecord.numOfKids) == 0)
                {
                    kidsAmt = 0;
                }
                // the subtotal is equal to subtotal + adultamt, it continues till the value stored  in the starttourdate
                //is same as that of ("transition .name") but as soon as start date changes this condition
                //gets false and it get transfer to the else part
                subtotalA = subtotalA + adultAmt;
                subtotalK = subtotalK + kidsAmt;

                //displaying output in a listbox
                lstInfo.Items.Add(string.Format(formatLine1, startTourDate, EndDate, adultAmt, kidsAmt));
            }

請幫忙。 提前致謝

可能是因為break; 是您的foreach語句中的第二個命令。 因此,僅打印第一個記錄,因為在您的下一個foreach語句中只有一個匹配的日期。 您只需要一個foreach語句。 換句話說,刪除所有這些:

break;
}
    //putting logic for getting break on a year every time before it changes
    foreach (var personRecord in myQuery1)
{

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM