Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/275.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# 正在将元数据收集到表中_C#_.net_Linq_Datatable - Fatal编程技术网

C# 正在将元数据收集到表中

C# 正在将元数据收集到表中,c#,.net,linq,datatable,C#,.net,Linq,Datatable,我有通过C程序的tabluar数据,我需要在完成之前收集一些元数据。元数据始终基于数据字段进行计数。此外,我需要将它们按数据中的一个字段分组。我需要定期向这个元数据集合添加新计数 我已经研究了一段时间,我认为有意义的是重新编写程序,将数据存储为DataTable,然后在表上运行LINQ查询。我遇到的问题是能够将不同的计数放入一个类似表的结构中,然后将其写出 我可能会运行如下查询: var query01 = from record in records.AsEnumerable()

我有通过C程序的tabluar数据,我需要在完成之前收集一些元数据。元数据始终基于数据字段进行计数。此外,我需要将它们按数据中的一个字段分组。我需要定期向这个元数据集合添加新计数

我已经研究了一段时间,我认为有意义的是重新编写程序,将数据存储为DataTable,然后在表上运行LINQ查询。我遇到的问题是能够将不同的计数放入一个类似表的结构中,然后将其写出

我可能会运行如下查询:

var query01 = 
    from record in records.AsEnumerable()
    group record by record.Field<String>("Association Key") into associationsGroup
    select new { AssociationKey = associationsGroup.Key, Count = associationsGroup.Count<DataRow>() };
获取按字段关联键分组的所有记录的计数。我想要另一个计数,以同样的方式分组:

var query02 =
    from record in records.AsEnumerable()
    where record.Field<String>("Number 9") == "yes"
    group record by record.Field<String>("Association Key") into associationsGroup
    select new { AssociationKey = associationsGroup.Key, Number9Count = associationsGroup.Count<DataRow>() };
等等

我曾想过尝试联合链查询,但由于我正在投影到匿名类型,所以我很难将它们放到联合中。我想不出怎样做才能让工会更好地运作


那么,我如何才能将元数据收集到一个类似表的结构中呢?

由于类型不同,所以不会进行联合。将Number9Count和Count添加到这两个匿名类型中,然后再次尝试联合。

我最终通过创建一个类来解决这个问题,该类将我需要的记录集保存为数据表。用户可以通过使用参数Func的方法添加查询。该方法将提供该参数的查询构造为where子句,在生成的匿名类型化对象中维护相同的分组和属性

检索结果时,该类对存储的每个查询进行迭代,并将结果输入到新的数据表中