2013-07-22 3 views
1

Я использую Entity Framework с реляционной базой данных SQL. Например, сакэ, позволяет сказать, что у меня есть две таблицы:LINQ Query - Где есть дочерние элементы

Customers 
Invoices 

Клиенты имеют один ко многим отношений с счетов-фактур, но не каждый клиент имеет счет-фактуру.

Я хотел бы сделать запрос, в котором будут представлены клиенты, имеющие хотя бы один счет-фактуру. Как:

Dim queryCustomersWithInvoices = From rows in context.customers 
           Where rows.has(Invoices) 

Where утверждение является проблемой, синтаксис является неправильным, это просто выразить свое намерение.

ответ

2

Предполагая, что у вас есть собственность счетов-фактур на клиенте ...

Where rows.Invoices.Any() 

должен работать.

+0

Thats it, thanks :) – user1698923

0

Вы также можете рассчитывать счета-фактуры, если они являются собственностью клиента.

Dim queryCustomersWithInvoices = From rows in context.customers 
          Where rows.Invoices.Count() >=1 
1

Вы могли:

  1. использование .Any(), версия LINQ из 'где существует'. Разъяснения здесь: Exists query with LINQ
  2. написать что-то вроде where rows.Invoices.Count > 0

Первое решение, вероятно, быстрее, так как я предполагаю, что это не нужно на самом деле сосчитать счетов-фактур.

+0

+1 по причине '.Any()' предпочтительнее 'Count> 0' – hometoast

Смежные вопросы