gpt4 book ai didi

c# - Linq GroupBy - 如何在运行时指定分组键?

转载 作者:行者123 更新时间:2023-11-30 13:24:41 24 4
gpt4 key购买 nike

有没有做 Linq 的好方法 GroupBy在运行时确定分组键的位置?例如我希望根据用户选择的字段列表构建分组键 - 你能做到吗?我知道如果我将所有内容都转换为字符串表我可以很容易地做到这一点,但我想知道是否有其他优雅或聪明的方法来完成此任务。

class Item
{
public int A, B;
public DateTime D;
public double X, Y, Z;
}

我有一个 List<Item>称为 data .我想做一些事情,比如检索 X 的总和按 A 分组,或 X 的总和, Y , 和 Z , 按 A 分组和 B .但是应该能够在运行时以某种方式指定哪些字段进入分组。

最佳答案

您只需要在运行时构造一个 Func 即可:

var arg = Expression.Parameter(typeof(Item), "item");
var body = Expression.Property(arg, "D");
var lambda = Expression.Lambda<Func<Item, DateTime>>(body, arg);
var keySelector = lambda.Compile();

用法:

var result = source.GroupBy(keySelector);

如果您在编译时不知道属性的类型,它会稍微(但不会多)困难。

关于c# - Linq GroupBy - 如何在运行时指定分组键?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2914656/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com