以下代码需要5分钟才能在100,000行上运行。在我看来,这太疯狂了。我究竟做错了什么?

        var query =
            from foo in fooStuff.AsEnumerable()
            group foo by foo.Field<Int64>("FooID") into g
            select new
            {
                    FooID = g.Key,
                    FooTier = g.Min(foo => foo.Field<int>("Tier"))
            };

注意:在单声道上。

最佳答案

当您调用AsEnumerable()时,您正在实现所有实体,因此您的分组是在内存中完成的。尝试删除该部分,以便在数据库级别完成分组:

var query =
        from foo in fooStuff
        group foo by foo.FooID into g
        select new
        {
                FooID = g.Key,
                FooTier = g.Min(foo => foo.Tier)
        };

09-30 23:17