Чистое приложение. У меня есть одна сущность с дочерними сущностями. Мне нужно фильтровать на основе значений дочерних объектов. Например, в приведенном ниже запросе
var sourceProposal = proposals.ProposalResults.Where(x => x.Quotes.All(c => c.QuotationId.ToLower().Trim() == sourceQuoteId.ToLower().Trim()));
У меня есть входной параметр sourceQuoteId, который присутствует в кавычках дочерней таблицы. Здесь родительской таблицей является предложение. Таким образом, будет несколько предложений, и каждое предложение будет иметь несколько цитат. Идея состоит в том, чтобы отфильтровать предложение на основе идентификатора цитаты. Вышеприведенный запрос работает нормально, когда существует только одна цитата, но он не будет фильтроваться, когда есть несколько цитат. Может ли кто-нибудь помочь мне отфильтровать на основе дочерней таблицы?
Кажется, вам следует звонить Any
, а не All
, если вам нужны предложения с любой цитатой, удовлетворяющей критерию.
Причина, по которой вы получаете эту работу только тогда, когда в коллекции находится 1 результат, заключается в том, что вы используете оператор All, оператор All используется для проверки того, удовлетворяют ли все элементы в последовательности заданному условию или нет.
Что вы хотите использовать, так это оператор Any. Оператор Any используется для проверки того, удовлетворяет ли какой-либо отдельный элемент в последовательности заданному условию или нет.
Тогда ваш запрос должен быть:
var sourceProposal = proposals.ProposalResults
.Where(x => x.Quotes.Any(c => c.QuotationId.ToLower().Trim() == sourceQuoteId.ToLower().Trim()));
попробуй это:
var sourceProposal = proposals.ProposalResults.Where(x => x.Quotes.Any(c => c.QuotationId.ToLower().Trim() == sourceQuoteId.ToLower().Trim()));