数据表中的c#分类

时间:2017-06-05 02:23:22

标签: c# datatable

我不确切地知道解释我的问题的正确术语/方式是什么,但我希望有人能够理解我的想法

我的数据表需要对几种类型的源进行分类(如图所示),我需要根据类型计算它们。有什么办法可以执行此操作吗?

非常感谢您的回复

这是我到目前为止所尝试的内容

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

当前输出

current output

预期产出

expected output

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

2 个答案:

答案 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,下面的代码会按CodeSource 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();