C# 使用Linq复制GroupBy语句
我正在用.NETFramework4.0和EntityFramework6.1.3开发一个C#库 我希望得到与此sql语句相同的结果: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 具有实体框架 我正在使用存
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();