//CSV文件存放如下数据
//时间,IP,CPU值
2006-06-13 16:56:39,192.168.0.7,32
2006-06-13 16:56:39,192.168.0.6,19
2006-06-13 16:56:39,192.168.0.5,102006-06-13 16:56:58,192.168.0.7,22
2006-06-13 16:56:58,192.168.0.6,99
2006-06-13 16:56:58,192.168.0.5,112006-06-13 16:57:29,192.168.0.7,34
2006-06-13 16:57:29,192.168.0.6,77
2006-06-13 16:57:29,192.168.0.5,12
……
想通过C#实现统计出如下的功能以第一列时间进行如同数据库的Group By操作,并把IP字段由选择变成投影
例子如下
Time, 192.168.0.7,192.168.0.6,192.168.0.6
2006-06-13 16:56:39 32 19 10
2006-06-13 16:56:58 22 99 11
2006-06-13 16:57:29 34 77 12
……
//时间,IP,CPU值
2006-06-13 16:56:39,192.168.0.7,32
2006-06-13 16:56:39,192.168.0.6,19
2006-06-13 16:56:39,192.168.0.5,102006-06-13 16:56:58,192.168.0.7,22
2006-06-13 16:56:58,192.168.0.6,99
2006-06-13 16:56:58,192.168.0.5,112006-06-13 16:57:29,192.168.0.7,34
2006-06-13 16:57:29,192.168.0.6,77
2006-06-13 16:57:29,192.168.0.5,12
……
想通过C#实现统计出如下的功能以第一列时间进行如同数据库的Group By操作,并把IP字段由选择变成投影
例子如下
Time, 192.168.0.7,192.168.0.6,192.168.0.6
2006-06-13 16:56:39 32 19 10
2006-06-13 16:56:58 22 99 11
2006-06-13 16:57:29 34 77 12
……
解决方案 »
- 如何合并这样的list<object>
- 如何获取窗体的句柄
- 为何用File.ReadAllLines读取文件后无法更改
- 求SQL语句
- Windows Workflow Foundation 是需要3.0 框架吗?
- 构造函数的作用
- 通过 Remoting 访问远程服务端出问题(请各位高手指教)
- 翻译
- 要在自定义控件中接受数据集有什么好办法?
- imap协议收取exchange邮件 需要验证 求指点
- 各位大侠,Jmail组件pop3协议怎么接收附件啊???
- 用C#开发的桌面程序,还需要.net框架的支持,才能运行,但目前像xp,2000等默认安装都不带.net框架,这么说C#开发的桌面程序目前很难普极应用,
可以借助于数据库来实现此功能,不过只能用MYSQL 4.1.X数据库,不能用其它数据库
最好是用纯C#实现,多谢 了
不好意思,可能刚才表达有误,就是有点类似group by的操作
原始文件在CSV文件中,最终也是生成CSV文件
和上面的例子一下如下:
Time,192.168.0.7,192.168.0.6,192.168.0.6
2006-06-13 16:56:39,32,19,10
2006-06-13 16:56:58,22,99,11
2006-06-13 16:57:29,34,77,12
最好能用C#代码来实现,用MYSQL挺麻烦的,如果是SQL SERVER我早就实现这功能了
请大家帮忙了:)
2、获得IP列表,通过第一条记录的时间,用"DataTable.Select"获得;
3、获得统计记录条目,通过第一条记录的IP值,用"DataTable.Select"获得;
4、通过2和3,创建统计表,然后对于IP列来说分别用"DataTable.Select"方法来进行填写。
格式是固定的,但对于每个时间来说,所有ip并不一定都有记录。
能给出更具体一点的代码吗,您说的意思,我不大明白
DataTable dt = new DataTable();
dt.Columns.Add("time");
dt.PrimaryKey = new DataColumn[]{dt.Columns[0]};
//遍历CSV文件的每一行数据
string curTime = "2006-06-13 16:56:39 32";
string curIP = "192.168.0.6";
string curPrecent = "32"; if(!dt.Columns.Contains(curIP))
dt.Columns.Add(curIP); DataRow curRow = dt.Rows.Find(curTime);
if(curRow == null)
{
curRow = dt.NewRow();
dt.Rows.Add(curRow);
}
curRow[curIP] = curPrecent; //ok,完成,绑定到DataGrid显示
public class IPData
{
public string IP;
public int count;
}当有新的数据进来就进行检查,如果存在对应的节点,就将count加1 ,否则就加入一个新节点如果IP值数量太大,就会有性能问题,不过对于192.168.XXX.XXX应该不会有问题
注意如果知道IP总数的大范围,可以一次性分配内存,这样会加快速度
Eddie005(♂) №.零零伍 (︶︵︶)