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

C# linq中带有两个参数的WHERE IN子句,c#,linq,C#,Linq,当我有带一个参数的WHERE IN时,我使用Contains,但当我有两个参数时,它不起作用。我需要在linq中用SQL编写一个子查询: SELECT ename, sal, deptno FROM emp WHERE (sal, deptno) IN (SELECT MIN(sal), deptno FROM emp GROUP BY deptno); 我试着将Where分为两个独立的,但这并没有改变任何事情。你应该简单地GroupBy,然后使用SelectMany在Where中应用你的“

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

SELECT ename, sal, deptno
FROM emp
WHERE (sal, deptno) IN
(SELECT MIN(sal), deptno
FROM emp
GROUP BY deptno);


我试着将Where分为两个独立的,但这并没有改变任何事情。

你应该简单地GroupBy,然后使用SelectManyWhere中应用你的“IN”条件,如下所示:

var result = Emps.GroupBy(g => g.Deptno).SelectMany(a => a.Where(b => b.Sal == a.Min(c => c.Sal)));
我还准备了一个关于DotNetFiddle的小例子:

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