Возможно, на этот вопрос где-то был дан ответ (и если да, я бы хотел получить ссылку!). Но поскольку я не знаю, какой тип запроса linq я пытаюсь выполнить, я не смог найти ничего, что могло бы мне помочь.
У меня уже есть очень простая настройка запроса для получения всех записей типа DomainSequence.
var query = db.DomainSequences;
Существуют разные типы доменных последовательностей. Я хочу получить их все. Однако для записей, которые имеют атрибут DomainType, равный «AT», я хочу вернуть только некоторые из записей «AT» (т. Е. Сделать предложение where для фильтрации записей «AT», но все же хочу вернуть все не AT записи.
Проще говоря, я хочу получить все записи DomainSequence, но для записей, которые имеют DomainType == "AT", возвращать их только в том случае, если они удовлетворяют определенным условиям.
Я могу придумать способ сделать это, выполнив что-то вроде:
query.Where(x => x.DomainType != "AT" || (x.DomainType == "AT" && AT conditions....));
Я думаю, что это должно сработать, но проблема возникает, когда мне приходится выполнять подфильтры в других столбцах, а затем он начинает усложняться и усложняться очень быстро.
В идеале я хотел бы сделать что-то вроде
query.Where(x => x.DomainType == "AT" || x.DomainType == "KS")
.WhereIf(y => y.DomainType == "AT" then apply filter on those)
.WhereIf(z => z.DomainType == "KS" then apply filter to these);
Я не уверен, есть ли способ сделать этот тип подфильтра в LINQ или в SQL (хотя я предполагаю, что есть). Любые предложения о том, как это можно сделать относительно чисто?
Спасибо!