Это мой запрос linq
from row in (
from c in db.TabC
from cpd in db.TabPD
from slm in db.TabSLM
where cpd.SLid == slm.SLid
where c.Id == cpd.CID
where c.O_Id == 1
select new { c, cpd, slm })
group row in row.slm.SLType into g
select new
{
SLType = g.Key,
EStat = g.Count(r => r.c.EstatID != null),
Training = g.Count(r => r.cpd.TrId != null),
TrainingComplete =
g.Count(r => r.cpd.TrStat == 44),
AssessmentComplete =
g.Count(r => r.cpd.CndAssess == 44)
};
Мне нужно сделать левое соединение с таблицей db.TabSLM и получить столько записей, сколько есть в этой таблице. TabC является главной таблицей, как и TabSLM. TabPD имеет подробные записи, которые ссылаются как на TabC, так и на TabSLM. С этим запросом, когда в TabPD нет совпадений ни для идентификатора строки TabC, ни для идентификатора строки TabSLM, я не получаю никаких записей. Я хочу вернуть количество записей, присутствующих в TabSLM, если совпадений нет. Любые идеи о том, как изменить этот запрос?
Ниже приведен пример данных для каждой из трех таблиц с минимальными полями в списке
TabC
ID O_ID Name
1 1 ABC
2 1 XYZ
3 1 RST
TabPD
RowID CID SLid
1 2 1
2 1 1
3 3 2
4 ...
TabSLM
SLid SLType
1 single level
2 Multi level
С помощью приведенного выше запроса я могу получить записи, где TabC.O_ID == 1, но не там, где TabC.O_ID == 3, поскольку у TabC.O_ID нет записей с ID == 3. Я все еще хочу для отображения SLType с другими столбцами, отображаемыми как 0
Спасибо за ваше время ...