LINQ Присоединяйтесь к началу 1

У меня есть три объекта (splistitemcollection), которые я объединяю, и это прекрасно работает, но проблема, с которой я сталкиваюсь, состоит в том, что между объектом контракта и объектом клиентов есть отношения один ко многим. Мне нужно получить только первый объект клиентов для каждого объекта контракта во время соединения.

Вот что я получаю

(Contract)(Customer)
12345  John Smith
12345  Jane Smith
67890  howard Jones
67890  Mary Jones

Вот что я хочу 12345 (просто один из клиентов, Джейн или Джон)

Вот код, который я сейчас использую.

  var joinedResults = from SPListItem contracts in _contractList
                      join SPListItem customers in _customerList
                      on contracts["ContractNumber"] equals customers["ContractNumber"]  
                      join SPListItem loans in _loanList
                      on contracts["ContractNumber"] equals loans["Contract_x0020_Number"] 
                      into l from loans in l.DefaultIfEmpty()
                      select new MergedData(contracts, customers, loans);

В SQL я бы определил предложение select top в подзапросе, определенном в моем соединении, я просто не могу обернуться вокруг синтаксиса для моего мозга новичка linq.

Конечный результат

  var joinedResults = from SPListItem contracts in _contractList
      join SPListItem customers in 
      // Derived subset
        (from SPListItem customers in _customerList
        group customers by customers["ContractNumber"] into groupedCustomers 
        select groupedCustomers.FirstOrDefault()
      )  on contracts["ContractNumber"] equals customers["ContractNumber"]  
      join SPListItem loans in _loanList
      on contracts["ContractNumber"] equals loans["Contract_x0020_Number"] into l
      from loans in l.DefaultIfEmpty()
      select new MergedData(contracts, customers, loans);

Ответы на вопрос(1)

Ваш ответ на вопрос