0

我正在使用 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;
4

2 回答 2

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
        }
    }
}

编辑代码

于 2012-07-31T16:29:08.047 回答
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# 语法还是行对的逻辑?

于 2012-07-31T15:51:49.580 回答