Fiz o seguinte código para buscar as compras acima de 3 reais de determinado produto:
static void Main(string[] args)
        {
            using (var contexto = new LojaContext())
            {
                LogSql(contexto);
                //Compras acima de 3 reais do Produto
                var p1 = contexto.Produtos
                    .Where(p => p.Id == 3002)
                    .FirstOrDefault();
                contexto.Entry(p1)
                    .Collection(p => p.Compras)
                    .Query()
                    .Where(c => c.Preco > 3.0)
                    .Load();
                Console.WriteLine($"Compras do produto {produto.Nome} com condicional");
                foreach (var compra in p1.Compras)
                {
                    Console.WriteLine($"{compra.Quantidade} {compra.Produto.Unidade} de {compra.Produto.Nome} no valor de {compra.Preco}");
                }
            }
        }No log a saída das queries foi:
Executed DbCommand (1ms) [Parameters=[], CommandType='Text', CommandTimeout='30']
SELECT TOP(1) [p].[Id], [p].[Categoria], [p].[Nome], [p].[PrecoUnitario], [p].[Unidade]
FROM [Produtos] AS [p]
WHERE [p].[Id] = 3002
Executed DbCommand (5ms) [Parameters=[@__get_Item_0='?' (DbType = Int32)], CommandType='Text', CommandTimeout='30']
SELECT [e].[Id], [e].[Preco], [e].[ProdutoId], [e].[Quantidade]
FROM [Compras] AS [e]
WHERE ([e].[ProdutoId] = @__get_Item_0) AND ([e].[Preco] > 3.0E0)
Compras do produto Pão Francês com condicional
6 Unidade de Pão Francês no valor de 2,4Porque a compra no valor de 2,4 retornou? (OBS: Só tem essa compra na tabela. Esperava que nada fosse exibido no console com essa condição.)
Obrigado,
 
            