C# 使用Linq复制GroupBy语句

C# 使用Linq复制GroupBy语句,c#,sql,entity-framework,C#,Sql,Entity Framework,我正在用.NETFramework4.0和EntityFramework6.1.3开发一个C#库 我希望得到与此sql语句相同的结果: select c.CODE_LEVEL from CODES c where c.CODE in (Select CODE from AGGREGATION_CHILDS where PARENT_CODE = N'1') group by c.CODE_LEVEL 具有实体框架 我正在使用存

我正在用.NETFramework4.0和EntityFramework6.1.3开发一个C#库

我希望得到与此sql语句相同的结果:

select c.CODE_LEVEL 
  from CODES c
 where c.CODE in 
        (Select CODE
           from AGGREGATION_CHILDS
          where PARENT_CODE = N'1')
group by c.CODE_LEVEL
具有实体框架

我正在使用存储库模式,我已经尝试了以下方法:

List<AGGREGATION_CHILDS> childrenCodeLevel = 
                m_AggChildRepo
                    .SearchFor(a => a.PARENT_CODE == aggregation.PARENT_CODE).GroupBy(a => a.Code.CODE_LEVEL).SelectMany(a => a).ToList();
以下是sql表创建语句:

CREATE TABLE [dbo].[CODES]
(
    [CODE] [nvarchar](20) NOT NULL,
    [CODE_LEVEL] [tinyint] NOT NULL,
     CONSTRAINT [PK_CODES] PRIMARY KEY CLUSTERED 
    (
        [CODE] ASC
    )
)
CREATE TABLE [dbo].[AGGREGATION_CHILDS]
(
    [CODE] [nvarchar](20) NOT NULL,
    [PARENT_CODE] [nvarchar] (20) NOT NULL,
    [POSITION] [int] NOT NULL,
    CONSTRAINT [PK_AGGREGATION_CHILDS] PRIMARY KEY CLUSTERED 
    (
        [CODE] ASC
    ), 
    CONSTRAINT [FK_AGGREGATION_CHILDS_AGGREGATIONS] FOREIGN KEY ([PARENT_CODE]) REFERENCES [AGGREGATIONS]([CODE]) ON DELETE CASCADE, 
    CONSTRAINT [FK_AGGREGATION_CHILDS_CODES] FOREIGN KEY ([CODE]) REFERENCES [CODES]([CODE])
)
对于相同的
父级\u代码
聚合\u子级
中的所有记录将具有相同的
代码级别


如何复制该sql语句?

由于您没有使用任何聚合,因此group by将删除重复项,与使用
Distinct
相同

var res = db.CODES.Where(x => 
              db.AGGREGATION_CHILDS.Any(y => y.PARENT_CODE == 1 && x.Code == y.Code))
          .Select(x => x.CODE_LEVEL)
          .Distinct();

我认为如果你改变
选择c.code\u级别,那么如何重写可能会更清楚。。。按c.CODE\U级别分组到一个简单的中,选择不同的c.CODE\U级别,而不选择分组依据。”我已经尝试了以下方法:“。。。但是你到底在问什么?你想做什么?什么不起作用?
var res = db.CODES.Where(x => 
              db.AGGREGATION_CHILDS.Any(y => y.PARENT_CODE == 1 && x.Code == y.Code))
          .Select(x => x.CODE_LEVEL)
          .Distinct();