C# LINQ:动态创建属性和值,其中包括分组查询中的值之和

2024-06-22

我的标题有点令人困惑,所以我会在这里解释一下。

这是我的示例查询以及我希望实现的目标:

var results = from row in toSearch.AsEnumerable()
              group by row.Field<String>("Somename") into grp
              select new
                        {
                         GroupMe = grp.Key,

                         foreach (var k in someDic.Keys){
                               TODOPROPERTYNAMEFROMk = grp.sum(x => grp.k);
                         }
                          };

这是我想要实现的总体想法。基于键字典,我想从中创建属性名称,同时汇总分组查询中的数据。总和将基于键的值。
toSearch 是一个数据表,字典的所有键组成了数据表的一些标头。这对我来说似乎是不可能的,我已经搜索了一些来源,其中之一(抱歉我失去了作者......)给了我这个解决方案:

//For generating dynamic objects fr
  public static object DynamicProjection(object input, IEnumerable<string> properties)
{
    var type = input.GetType();
    dynamic dObject = new System.Dynamic.ExpandoObject();
    var dDict = dObject as IDictionary<string, object>;

    foreach (var p in properties)
    {
        var field = type.GetField(p);
        if (field != null)
            dDict[p] = field.GetValue(input);

        var prop = type.GetProperty(p);
        if (prop != null && prop.GetIndexParameters().Length == 0)
            dDict[p] = prop.GetValue(input, null);
    }

    return dObject;
}

我尝试像这样使用它

var results = from row in toSearch.AsEnumerable()
          group by row.Field<String>("Somename") into grp
          select grp;
var test = results.Select( x => DynamicProjection(x,someDic.Keys));

这给了我一个我无法利用或至少无法从中调用属性的对象。我真的很感谢任何帮助我实现我最初追求的目标,并对这篇长篇文章表示歉意。

Edit预期输入是数据表,例如:

Fee | Fi | Fo | Fum
cat | ds | 2  | 93
cow | ff | 5  | 120
cat | ds | 9  | 33
cow | jk | 1  | 133

按标题分组:费用
收到的标头:Fo、Fum
预期输出:

cat | 11  | 126
cow | 6   | 253

获胜者:牛,所以收养一头牛*只是开玩笑,哈哈


我不太熟悉ExpandoObject(我的论点可能是错误的),你可以与Dictionary<columnname, sum>.

我建议返回一个Dictionary与标题和各自的总和。

// ex -- Given following header
List<string> headers = new List<string>();
headers.Add("fo");
headers.Add("fum");    

DataTable dt; // Assign correct data source.
var results =dt.AsEnumerable()
        .GroupBy(g=>g.Field<string>("fee"))       
        .Select(x=> new 
                {
                    x.Key, 
                    dict = headers.ToDictionary(h=>h, h=>x.Sum(s=>s.Field<int>(h)))
                })
        .ToList();  

此查询分组于fee列并计算给定标题列的总和。

检查这个Demo https://dotnetfiddle.net/EyWW7S

Output:

Key=cat, column fo , Sum 11, column fum , Sum 126
Key=cow, column fo , Sum 6, column fum , Sum 253
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

C# LINQ:动态创建属性和值,其中包括分组查询中的值之和 的相关文章

  • 根据当前文化调用不同(本地化)视图

    我在用着LocalizationAttribute它实现了ActionFilterAttribute本地化视图 我简单地说 Localize 在控制器上 我使用 LocalizeStrings resx 文件根据当前线程上的语言进行应用 一
  • 带方括号的 Uri.EscapeUriString

    这是一个奇怪的问题 但让我们看看它会得到什么样的回应 如果我编写一个控制台应用程序 VS 2013 NET 4 5 1 并执行这行代码 Uri EscapeUriString 我明白了 但是 如果我执行同样的事情 嗯 从技术上来说Uri E
  • 使用索引避免迭代器失效,维护干净的接口

    我创建了一个MemoryManager
  • 以编程方式更改 Excel 中的字体(Trebuchet MS、Calibari)C#

    我目前正在使用一个 C 应用程序 该应用程序有一个将生成 Excel 文件的类 一切都很顺利 Excel 工作表上填充的数据具有 Times New Roman 字体 我想将其更改为其他字体 Calibari 我怎样才能以编程方式做到这一点
  • 用 C# 中的字典中的值替换字符串中的单词

    我有一个简单的dictionary像这样 var fruitDictionary new Dictionary
  • 错误 C2065:'cout':未声明的标识符

    我正在处理我的编程作业的 驱动程序 部分 但我不断收到这个荒谬的错误 错误 C2065 cout 未声明的标识符 我什至尝试过使用std cout但我收到另一个错误 IntelliSense 命名空间 std 没有成员 cout 当我宣布u
  • 将标准库添加到C++ eclipse项目中

    一个 非常 新手 C 问题 有没有办法自动将标准库添加到 C eclipse 项目中 我安装了 CDT 主要功能插件 您可以手动添加 STL 标头的路径路径和符号 gt 包含选项卡 http help eclipse org galileo
  • 在 Windows 服务中使用 OleDb 从 Excel 读取数据?

    免责声明 我知道这是一种不好的做事方式 这是我们与客户的唯一选择 Problem 我们需要每隔 x 时间从 Excel 文件读取数据 数据通过第三方 Excel 插件不断变化 应用程序的环境是 Windows XP SP1 和 Net 2
  • ObjectTrackingEnabled 和 linq-to-sql

    I read here http www sidarok com web blog content 2008 05 02 10 tips to improve your linq to sql application performance
  • 命令中带空格的 Windows C 系统调用

    我无法使用名称和参数中的空格进行系统调用 例如 system c program files something example exe c my files example txt 我尝试过各种我知道的方法来逃避 但没有任何效果 我努力了
  • Linux C++ 调试器

    我正在寻找完美的 Linux C 调试器 我不期望成功 但搜索应该提供丰富的信息 我是一个非常有能力的 gdb 用户 但 STL 和 Boost 很容易压垮我的调试技能 并不是说我无法深入了解数据结构的内部结构 而是它需要很长时间 我通常会
  • 持续运行的 C# 代码 - 服务还是单独的线程?

    我有一个 NET 4 Web 应用程序 它有 3 个关联的独立项目 DAL BAL 和 UI 我正在使用实体框架进行数据库交互 我有代码循环遍历一堆数据库数据 根据找到的内容调用方法 然后更新数据库 我希望这段代码一直运行 同时 我希望用户
  • 如何在 WCF 中反序列化自定义 SOAP 标头?

    我正在尝试向通过 WCF 的所有 SOAP 请求添加自定义标头 我发现这篇精彩的文章 http blogs msdn com b mohamedg archive 2012 10 21 adding custom soap headers
  • UWP - 绑定枚举差异

    我遇到了一个非常有趣的问题 假设 UWP 应用中有以下 XAML 页面内容
  • 从数组中删除空字符串,同时保持记录而不循环?

    这个问题在这里被问到 从数组中删除空字符串 同时保留非空字符串的索引记录 https stackoverflow com questions 18113243 remove empty strings from array while ke
  • 除法时的小数舍入误差 (C#)

    我基本上有四个数字 比如 100 200 300 400 我需要计算概率为 100 100 200 300 400 200 100 200 300 400 等等在 当我使用小数数据类型来存储这些概率时 由于舍入问题 它们不会达到 1 在不使
  • 没有类型的 IEnumerable 属性

    我正在尝试创建一个类似于来自 MSDN 的官方 DataGrid ItemsSource 的属性 public IEnumerable ItemsSource get set 这提供了对任何派生类中任何类型的支持 有了这个 我可以设置类似的
  • 合并大文件的最佳方法是什么?

    我必须合并数千个大文件 每个大约 200MB 我想知道合并这些文件的最佳方法是什么 行将有条件地复制到合并文件中 可以使用 File AppendAllLines 或使用 Stream CopyTo 吗 使用 File AppendAllL
  • 如何进行平衡组捕获?

    假设我有这个文本输入 tes tR R abc aD mnoR xyz 我想提取 ff 输出 R abc R xyz D mnoR xyz R R abc aD mnoR xyz 目前 我只能使用平衡组方法提取组内的内容 如中所示msdn
  • 如何以一对一/零关系更新员工和身份用户

    我正在尝试更新员工记录 也想更新身份用户 如果我先单独更新身份用户 例如 UserManager Update user Context Entry employee State System Data Entity EntityState

随机推荐

  • 如何使用 Java 10、Ant 和 Eclipse 编译器编译此代码?

    我正在尝试使用 Java 10 Ant 和 Eclipse 编译器编译这个简单的代码 import java util ArrayList import javax xml bind JAXBException class Test voi
  • 伊2。动态添加属性和规则到模型

    我正在编写一个小部件 我想避免用户向他们的模型添加代码 我知道这会更容易 但用它来学习新东西 您是否知道是否可以向模型添加一个属性 该属性不在您的数据库中 因此它将是虚拟的 并为该属性添加规则 您无权更改该模型代码 我知道规则是一个数组 过
  • Clojure:如何生成“trie”?

    鉴于以下 def inTree 1 2 1 2 3 1 2 4 5 9 1 2 4 10 15 1 2 4 20 25 你如何将它转换成这个特里树 def outTrie 1 2 3 4 5 9 10 15 20 25 这是一个清理后的解决
  • JaCoCo 和 MR 罐子

    JaCoCo 有一个问题 并且多版本 JAR 文件 http openjdk java net jeps 238 由于两个地方存在相同的类名 JaCoCo 抱怨道 Caused by java lang IllegalStateExcept
  • 每次 iPhone App 重新启动时 NSHomeDirectory 返回不同的路径

    我注意到每次我用 Xcode 重新启动应用程序时 NSHomeDirectory 都会返回不同的路径 显然即使我手动单击图标 因为它不会加载文件的内容 我很惊讶每次重新启动应用程序时它都会给我一个不同的目录 即使我使用 ForUser 方法
  • 为什么我的页面可以在 IE9 的 IE7 模式下工作,但不能在 IE7 本身下工作?

    在对 IE9 的每种浏览器和文档模式进行了大量测试之后 我最近启用了我们的新主页 not只是兼容模式 但实际的 IE7 和 IE8 仿真 该网站可以在每种模式下运行 更不用说现代浏览器了 然而 在它推出后 我收到一封电子邮件 说该网站在 I
  • 从书签加载外部 JS?

    如何使用书签加载外部 JavaScript 文件 这将克服 IE 的 URL 长度限制 并且通常会保持简洁 2015年更新 内容安全政策 https developer mozilla org en US docs Web Security
  • 模板模板部分特化仅与 -std=c++1z 和 g++ 一起使用

    我发现下面这段代码 include
  • 更新通用列表中元素的最佳方法[重复]

    这个问题在这里已经有答案了 假设我们有一个名为 Dog 的类 它有两个字符串 Name 和 Id 现在假设我们有一个包含 4 只狗的列表 如果您想更改 Id 为 2 的狗的名称 最好的方法是什么 Dog d1 new Dog Fluffy
  • 如何解决出现 python 扩展加载和扩展激活失败消息的问题?

    打开 VS code 时 我不断在屏幕右下角收到这些消息 关于如何摆脱它有什么想法吗 我仍然可以编写代码并运行代码 但我不明白为什么会发生这种情况 我尝试删除 python 扩展以及视频扩展选项卡中与 python 相关的任何内容 但没有成
  • 使用反射设置嵌套属性值

    我已经进行了彻底搜索 但找不到我的问题的确切答案 以下面的代码为例 public class Company private string m strName private Customer m objCustomer public Co
  • 一个解决方案中有多少个项目算太多?

    单个解决方案中有多少个项目是可以接受的 对于那些项目数量较大的应用程序 您是否将其他已编译的 dll 放在某个公共文件夹中以便能够运行该应用程序 由于在 Visual Studio 中项目会编译为程序集 因此您应该问自己的问题是 我应该有多
  • 仅使用 FPC 的 GUI

    我想知道如何在不使用Delphi语言 Object Pascsl 的情况下 仅使用安装了Lazarus的FPC Pascal 来开发GUI应用程序 32位 谢谢 直接使用小部件集 看看例如unix 的 packages gtk2 中的示例
  • CMake:编译 OpenCV 时未找到 CUDA 库

    我正在 Windows 上使用 CMAKE 编译支持 CUDA 的 OpenCV 3 0 0 当我点击 配置 时 出现如下错误 CMake Error The following variables are used in this pro
  • .NET 的多线程库

    我在一些程序中使用了多线程 但仍然感觉不太舒服 有哪些适用于 C NET 的多线程库 其中一个库相对于另一个库有哪些优势 我所说的多线程库是指所有有助于使多线程编程变得更容易的东西 您定期使用什么 NET 集成 例如 ThreadPool
  • Python 对象生命周期特征

    注意 如果您知道任何 非详细的 库代码可以实现我想要的功能 请启发 C C 程序员 我会接受它作为答案 我有一个全局变量设置为以下类的实例 它的目的是允许我设置一些手动中断点来放置一些快速和肮脏的东西printfscrapy 蜘蛛中的样式调
  • PowerShell 多个命令行的更改范围 - UICulture

    在我修改与问题目标相关的 PS 5 1 期间完全更改当前 PowerShell 会话的语言 https stackoverflow com questions 62872708 fully change language for the c
  • sklearn中RepeatedStratifiedKFold和StratifiedKFold的区别

    我尝试阅读文档RepeatedStratifiedKFold https scikit learn org stable modules generated sklearn model selection RepeatedStratifie
  • ExtJS 4 > 行编辑器网格 > 如何更改“更新”按钮文本

    有没有办法更改 ExtJS 4 行编辑器网格中 更新 按钮的文本 好问题 我查看了源代码 虽然 RowEditing 插件内部没有任何内容 但在它扩展 RowEditor js 的类中 有以下内容 Ext define Ext grid R
  • C# LINQ:动态创建属性和值,其中包括分组查询中的值之和

    我的标题有点令人困惑 所以我会在这里解释一下 这是我的示例查询以及我希望实现的目标 var results from row in toSearch AsEnumerable group by row Field