为了账号安全,请及时绑定邮箱和手机立即绑定

linq中带两个参数的WHERE IN子句

linq中带两个参数的WHERE IN子句

C#
Cats萌萌 2022-12-04 13:08:36
当我有一个参数的 WHERE IN 时,我使用 Contains 但是当我有两个参数时它不起作用。我需要在 linq 中用 SQL 编写一个子查询:SELECT ename, sal, deptnoFROM empWHERE (sal, deptno) IN(SELECT MIN(sal), deptnoFROM empGROUP BY deptno);var min = (from emp in Emps                       group emp by new { Dzial = emp.Deptno} into grouped                       select new                       {                           grouped.Key.Dzial,                           wynik = grouped.Min(x => x.Sal)                       });            var result = (from emp in Emps                          where min.Contains(emp.Deptno, emp.Sal)                          select new                          {                              emp.Ename,                              emp.Sal,                              emp.Deptno                          });我试图将 Where 分成两个独立的部分,但这并没有改变任何东西。
查看完整描述

1 回答

?
慕妹3242003

TA贡献1824条经验 获得超6个赞

您应该简单地使用GroupBy,然后使用SelectMany在Where中应用您的“IN”条件,如下所示:

var result = Emps.GroupBy(g => g.Deptno).SelectMany(a => a.Where(b => b.Sal == a.Min(c => c.Sal)));

我还在 DotNetFiddle 上准备了一个小例子: https ://dotnetfiddle.net/p8aYJv


查看完整回答
反对 回复 2022-12-04
  • 1 回答
  • 0 关注
  • 184 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信