Abd*_*eed 3 c# sql linq sql-server entity-framework
我正在尝试通过linq对c#中的实体进行分组,但生成的查询不包含其中的组仅生成选择
LINQ:
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,
});
Run Code Online (Sandbox Code Playgroud)
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
Run Code Online (Sandbox Code Playgroud)
它没有创建GROUP BY,因为没有必要.您正在使用group into,您没有迭代该组,并且您没有聚合任何值.如果Id是您的唯一标识列,则您甚至不创建组,因为每个组只有一个项目.这与简单的选择基本相同.
您必须接受EF将根据自己对LINQ查询的评估创建SQL查询.这些查询可能不同.您唯一的保证是它们产生相同的结果.