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

当我有一个参数的 WHERE IN 时,我使用 Contains 但是当我有两个参数时它不起作用。我需要在 linq 中用 SQL 编写一个子查询:


SELECT ename, sal, deptno

FROM emp

WHERE (sal, deptno) IN

(SELECT MIN(sal), deptno

FROM emp

GROUP 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 分成两个独立的部分,但这并没有改变任何东西。


Cats萌萌
浏览 189回答 1
1回答

慕妹3242003

您应该简单地使用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
打开App,查看更多内容
随时随地看视频慕课网APP