繁体   English   中英

在LINQ中有两个参数的WHERE IN子句

[英]The WHERE IN clause with two parameters in 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);

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
                          });

我试图将“位置”分为两个单独的位置,但这没有任何改变。

您应该简单地使用GroupBy ,然后使用SelectMany其中的 “内部”条件中应用“ 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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM