【问题标题】:Collecting metadata into table将元数据收集到表中
【发布时间】:2011-01-31 20:16:27
【问题描述】:

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

我已经研究了一段时间,我认为重新编写我的程序以将数据存储为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>() };

等等。

我曾考虑尝试Union 链接查询,但由于我投影到匿名类型,因此无法将它们联合起来。我不知道如何以不同的方式让工会更好地运作。

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

【问题讨论】:

    标签: c# .net linq datatable


    【解决方案1】:

    不打算联合,因为你有不同的类型。将 Number9Count 和 Count 添加到两个匿名类型,然后再次尝试联合。

    【讨论】:

      【解决方案2】:

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

      在检索结果时,该类会遍历存储的每个查询并将结果输入新的DataTable

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-05-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-07-12
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多