我不确切地知道解释我的问题的正确术语/方式是什么,但我希望有人能够理解我的想法
我的数据表需要对几种类型的源进行分类(如图所示),我需要根据类型计算它们。有什么办法可以执行此操作吗?
非常感谢您的回复
这是我到目前为止所尝试的内容
for (int l = 0; l < my_datatable.Rows.Count; l++)
{
data_source = my_datatable.Rows[l][3].ToString();
if (data_source.Contains("Cross Site Scripting"))
{
my_datatable.Rows[l][3] = "2";
}
else if (data_source.Contains("SQL Injection"))
{
my_datatable.Rows[l][3] = "3";
}
else if (data_source.Contains("Unicode Attack"))
{
my_datatable.Rows[l][3] = "4";
}
else if (data_source.Contains("Proxy Attack"))
{
my_datatable.Rows[l][3] = "5";
}
else
{
my_datatable.Rows[l][3] = "1";
}
当前输出
预期产出
CSV部分代码
string[] raw_text =
System.IO.File.ReadAllLines("C:\\dummylog3.csv"); //Placement of the
.CSV Files
string[] data_col = null;
int x = 0;
foreach (string text_line in raw_text)
{
//MessageBox.Show(text_line);
data_col = text_line.Split(' ');
if (x == 0)
{
for (int i = 0; i <= data_col.Count() - 1; i++)
{
my_datatable.Columns.Add(data_col[i]);
}
x++;
}
else
{
my_datatable.Rows.Add(data_col);
}
my_datagridview.DataSource = my_datatable;
this.Controls.Add(my_datagridview);
}
答案 0 :(得分:0)
创建一个继承DataTable的自定义类
public class CustomDataTable : DataTable
{
public enum ClassificationType
{
IMAGE
}
public ClassificationType classification { get; set; }
}
答案 1 :(得分:0)
确保您的项目引用System.Data.DataSetExtensions.dll
,如果没有,则添加它。你需要这个来调用&#39; CopyToDataTable`扩展方法。
为汇总数据创建表格。我们将使用它来为摘要表创建新行。但是数据不会存储在这里。见下一点:
var summary = new DataTable();
summary.Columns.Add("Code");
summary.Columns.Add("Source Type");
summary.Columns.Add("Number Of Hits", typeof(int));
使用Linq,下面的代码会按Code
和Source Type
对结果进行分组,然后查找它们的计数。它最终会将数据复制到DataTable
:
var result =
table.AsEnumerable()
.GroupBy(x => new { Code = x["Code"], SourceType = x["Source Type"] })
.Select(x => summary.Rows.Add(x.Key.Code, x.Key.SourceType, x.Count()))
.CopyToDataTable();