使用Linq循环构造(请求特定示例)

时间:2011-03-10 05:37:46

标签: c# linq partitioning

  

可能重复:
  How to use Linq to group every N number of rows

所以我最近不得不撕开一个CSV-esque文件,并决定用linq这样做(然后用F#清理它,使用懒散的评估策略不按顺序monad。那天我得到了许多时髦点)。

一般算法如下:

将每3行组合成1行,只要有:,将冒号和前面的所有内容串起来,如果有任何空行/字符串,则删除它们(这与从原始数据中复制数据的特性有关)来源,一位朋友做了剪切和粘贴,它的结构很好,足以将其拆分而无需修改数据。)

我通过“工作流程”执行此操作,如下所示(在伪代码中)

int i=0;
stringbuilder sb=new stringbuilder();

//strip empty lines omitted, was basically identical to the strip
//empty strings below

foreach i in lines
    if i%3=2-> add line to list make new stringbuilder;//UGLY!!!!!
    else stringbuilder.concat(',', i);

var query1 = from i in list where i.IsNullOrEmpty == false select i;
var query2 = from i int query1 where i.Contains(:) select (i.split())[1];//possible failure here, but I didn't bother to fix the linq version.

foreach i in lines
    streamwriter.write(i);

我现在知道Linq中的“into”子句,但我想要做的就是摆脱那个mod 3 foreach

我觉得应该有一种方法将集合分组或分区为3的数组,然后连接这些数组的每个元素(或类似的东西),但我无法弄清楚如何。我知道接受和接受,但无法弄清楚如何利用它们......

由于

0 个答案:

没有答案