C#将多条记录写入一行

时间:2012-07-31 15:40:24

标签: c#

我正在使用c#编写创建文本文件。我试图在文本文件中的一行上写2条记录。我的数据源来自存储过程的结果集。

这是我的代码。目前我只是按记录写作。我想在一行中将2条记录写入文本文件。

示例:

记录1记录6

记录2记录7

记录3记录8

记录4记录9

记录5记录10

记录11记录16

记录12记录17

记录13记录18

记录14记录19

记录15记录20

    public bool SalesPriceIndexProcess()
    {
        int page = 1, count = 1;
        FileStream fs = new FileStream(Properties.Settings.Default.Path + SalesPriceDirectoryReportName, FileMode.Create);
        StreamWriter sw = new StreamWriter(fs);
        foreach (ManhattanLUSESalesPriceIndex_Result s in _db.ManhattanLUSESalesPriceIndex())
        {
            if (count == 1)
            {
                SalesPriceHeaderWrite(s.BldgClassCd, ref fs, ref sw);
            }
            string saleDate = s.SaleDt.ToString();
            sw.WriteLine("{0,13:C0}{1,-5} {2,-4} {3,5} {4,3} {5,15:C0}{6} {7,-8} {8,4}"
                , s.SalePriceAmt, s.MultiSplitCd
                , Convert.ToInt16(s.StoriesNbr) + s.LandUseMajorCd
                , (s.LegalBlkId + "-"), s.LegalLot
                , s.TransAssdTotalAmt, s.BldgClassCd.PadRight(2)
                , (saleDate.Length > 6 ? saleDate.Substring(4, 2) + "/" + saleDate.Substring(6, 2) + "/" + saleDate.Substring(2, 2) : "")
                , page    
                );

            PclIdPageIndexDict.Add(s.PclId, page);
            if (count % 5 == 0)
            {
                sw.WriteLine(SalesPriceLineBreak);
            }
            if (count % 145 == 0)
            {
                sw.WriteLine(SalesPricePageBreak);
            }

            count++; //increment by 1
            page = count % 145;
        }
        return true;

2 个答案:

答案 0 :(得分:0)

您需要将最后5行存储在队列中。如果你写出你的行,你需要说出如下内容:

while(!eof) {
  for (int i=0; i<5; i++) {
    queue.enqueue(readline());
  }

  for (int i=0; i<5; i++) {
   write(queue.dequeue());
   write(readline());
   write('\n');
  }
}

您的问题是关于C#语法还是执行行对的逻辑?

答案 1 :(得分:0)

if(_db.ManhattanLUSESalesPriceIndex().Count() < 5)
{
// throw
}
else
{
    var collectionStore = _db.ManhattanLUSESalesPriceIndex().ToList();
    for(int i = 5; i < collectionStore.Count(); i++)
    {
        var recordN = collectionStore[i-5];
        // do whatever outputting you want
        var recordNPlusFive = collectionStore[i];
        // do whatever outputting you want
        }
    }
}

已编辑的代码