c# - Linq:Group By 没有生成 Group by Sql

标签 c# sql sql-server entity-framework linq

我正在尝试在 linq 中对 C# 中的实体进行分组,但生成的查询不包含分组依据,它只生成选择

林克:

IQueryable<EntityDataView> data = (from a in ctx.EntityDataViews
                                                        select a);

IQueryable<viewClass> groupedData = (from x in data
                                                       group x by new
                                                       {
                                                           x.Id,
                                                           x.Code,
                                                           x.Name,
                                                           x.Amuont,

                                                       } into g
                                                       orderby g.Key.Amuont descending
                                                       select new viewClass()
                                                       {
                                                           Id = g.Key.Id,
                                                           Code = g.Key.Code,
                                                           Name = g.Key.Name,
                                                           Amuont = g.Key.Amuont,
                                                       });

SQL:

SELECT 
[Project1].[Code] AS [Code], 
[Project1].[Name] AS [Name], 
[Project1].[Id] AS [Id], 
[Project1].[Amuont] AS [Amuont]
FROM ( SELECT 
    [Extent1].[Id] AS [Id], 
    [Extent1].[Code] AS [Code], 
    [Extent1].[Amuont] AS [Amuont], 
    [Extent1].[Name] AS [Name], 
    FROM [dbo].[EntityDataView] AS [Extent1]
)  AS [Project1]
ORDER BY [Project1].[Amuont] DESC

最佳答案

它没有创建GROUP BY,因为没有必要。您正在使用 group into,您没有迭代该组,也没有聚合任何值。如果 Id 是您的唯一标识列,您甚至没有创建组,因为每个组只有一个项目。这与简单的选择基本相同。

您必须接受 EF 将根据自己对 LINQ 查询的评估创建 SQL 查询。这些查询可能不同。您唯一的保证是它们产生相同的结果。

关于c# - Linq:Group By 没有生成 Group by Sql,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41826375/

相关文章:

c# - 使用枚举作为可选参数

c# - XML反序列化: working with list

C# 查找空单元格并使用 ClosedXml 将其写入其中

.net - 如何使用 .Net 应用程序和 SQL 查询访问大型机数据?

sql - TSQL - 动态创建表和插入

.net - 提示输入数据库连接字符串

c# - 是否可以在不中断调试的情况下在 Visual Studio 中查看执行函数列表?

mysql - SQL:4 个表到 1 个表,包含计数、分组和扣除?!

sql - 可能的黑客攻击尝试。如何判断我的数据库是否已被泄露

具有字符范围和区分大小写列的 SQL Server LIKE 运算符