EFCore Linq левое внешнее соединение - PullRequest
0 голосов
/ 07 февраля 2019

Я просмотрел сотни примеров и до сих пор не могу найти то, что ищу.

public class CA
{
    public int Id {get;set;}
    public List<SignOff> SignOffs {get;set}
}

public class SignOff
{
    public int Id {get;set;}
    public int CAId {get;set;}
    public bool IsCurrentQtr {get;set;}
}

В настоящее время у меня есть функция поиска, которая возвращает мне IQueryable<CA> qry.Теперь мне нужно использовать это значение IQueryable<CA> и оставить присоединение ко всем SignOffs, где IsCurrentQtr == true, но затем я хочу выбрать все CA, где SignOffs == null || SignOffs.Count == 0.

. Необходимо использовать синтаксис метода.Кроме того, имейте в виду, что на самом деле в таблице CA содержится около 50 столбцов данных с 15 другими связями FK, а таблица регистрации содержит около 70 столбцов данных и использует SQL Server 2017.

Может кто-то помочьмне написать этот запрос linq?

РЕДАКТИРОВАТЬ 1: К вашему сведению, это тоже озадачивает меня, но это то, как мне это объяснили.Пытаясь объяснить это лучше, я подумал о новом способе сформулировать это.Мне нужно выбрать все CA, у которых нет записи о выходе, где IsCurrentQtr имеет значение true.

Ответы [ 2 ]

0 голосов
/ 07 февраля 2019

Мне нужно выбрать все CA, которые не имеют записи о регистрации, где IsCurrentQtr имеет значение true.

Тогда ваш запрос должен выглядеть следующим образом:

var caList = db.CAs.Where(ca => ca.SignOffs.All(sf => sf.IsCurrentQtr == false)).ToList();

// or

var caList = db.CAs.Where(ca => ca.SignOffs.Count(sf => sf.IsCurrentQtr) == 0).ToList();
0 голосов
/ 07 февраля 2019

Согласно вашему редактированию, вам нужен этот результат.

var result = cs.Where(x => !x.Any(r => r.IsCurrentQtr));

Это найдет все CA, у которых нет Записи о регистрации, где IsCurrentQtr == true.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...