现在有一张表,结构如下:item passfail
2011001 1
2011002 1
2011003 0
2011004 1
2011005 1
2011006 1要求统计pass连续出现的次数,并加上开始及结束期数,如下startitem enditem count
2011001 2011002 2
2011004 3如果最后一次仍为1,那么统计出来的记录里面enditem先空着,等到下次更新原始表时再判断,
如果2011007出现的是0,那么记录补全为2011004 2011006 3,如果2011007出现的是1,那么记录
更新为2011004 4。要求每次更新原始表时都要执行这个汇总连续次数的方法
哪位高手可以给个例子啊?谢了
2011001 1
2011002 1
2011003 0
2011004 1
2011005 1
2011006 1要求统计pass连续出现的次数,并加上开始及结束期数,如下startitem enditem count
2011001 2011002 2
2011004 3如果最后一次仍为1,那么统计出来的记录里面enditem先空着,等到下次更新原始表时再判断,
如果2011007出现的是0,那么记录补全为2011004 2011006 3,如果2011007出现的是1,那么记录
更新为2011004 4。要求每次更新原始表时都要执行这个汇总连续次数的方法
哪位高手可以给个例子啊?谢了
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent(); List<Row> list = new List<Row>();
list.Add(new Row { Item = "201101", PassFail = true});
list.Add(new Row { Item = "201102", PassFail = true });
list.Add(new Row { Item = "201103", PassFail = false });
list.Add(new Row { Item = "201104", PassFail = true });
list.Add(new Row { Item = "201105", PassFail = true });
list.Add(new Row { Item = "201106", PassFail = true }); ResultList rList = new ResultList();
foreach (Row row in list)
{
rList.Process(row);
} foreach (Result result in rList)
{
System.Diagnostics.Debug.WriteLine(result);
}
}
} public class ResultList : List<Result>
{
Row _lastRow = null;
public void Process(Row row)
{
if (row.PassFail)
{
if (_lastRow == null || !_lastRow.PassFail)
{
this.Add(new Result() { Start = row.Item, End = string.Empty, Count = 1 });
}
else
{
this[this.Count - 1].Count++;
}
}
else
{
if (_lastRow != null && this.Count > 0)
{
this[this.Count - 1].End = _lastRow.Item;
}
}
_lastRow = row;
}
} public class Result
{
public string Start { get; set; }
public string End { get; set; }
public int Count { get; set; } public override string ToString()
{
return string.Format("Start:{0}, End:{1}, Count:{2}", Start, End, Count);
}
} public class Row
{
public string Item { get; set; }
public bool PassFail { get; set; }
}