Когда у меня есть WHERE IN с одним параметром, я использую Contains, но когда у меня есть два параметра, это не работает. Мне нужно написать подзапрос на SQL в linq:
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 на два отдельных, но это ничего не меняет.
Вы должны просто Группа по, а затем использовать ВыбратьМного, чтобы применить ваше условие "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