c# - Linq group by property 表现

标签 c# performance linq database-performance

关于受这篇文章启发的可参数化查询 LINQ group by property as a parameter 我获得了一个很好的参数化查询,但在性能上有一个缺点。

 public static void GetExpensesBy<TKey>( Func<Obj, TKey> myGroupingProperty)
    {
        var query = (from item in dataset
                     orderby item.ExpenseTime descending
                     select item).GroupBy(myGroupingProperty);
        // ....
    }
    // ..
    GetExpensesBy(p=> p.Column)

比直接查询慢很多

 var query = (from item in expense
                     orderby item.ExpenseTime descending
                     select item).GroupBy(p => p.Column);

在 13000 行的表中,差异约为 2 秒与 0.1 秒。

您知道如何改进第一个语法以提高性能吗?

最佳答案

更改 Expression 的参数类型:

public static void GetExpensesBy<TKey>( Expression<Func<Obj, TKey>> myGroupingProperty)
{
 //...
}

传递 Func<T>你调用GroupBy来自 IEnumerable<T>

关于c# - Linq group by property 表现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36405274/

相关文章:

java - 为什么 Java 中的确定性算法会在不同的时间运行?

c# - 使用 linq OrderBy 按 ID 对列表进行排序

c# - 如何使用 linq 对结果集进行分组?

c# - 在 C# 中访问 F# 可区分联合类型的数据的最简单方法是什么?

c# - 有效地加入内存列表

javascript - Jquery $ajax 函数在 C# 中返回 500 Internal Server Error

c# - Mango 快速应用程序切换和大量处理崩溃

c# - 如何利用磁盘 IO 队列

Java 多线程 - 最佳实践

c# - 集合中集合的 Linq where 子句