Tôi có ba đối tượng (splistitemcollection) mà tham gia cùng nhau đang hoạt động tốt nhưng vấn đề là có một mối quan hệ giữa nhiều đối tượng và đối tượng khách hàng. Tôi cần phải lấy chỉ là đối tượng khách hàng đầu tiên cho mỗi đối tượng hợp đồng trong thời gian tham gia.LINQ Tham gia ở trên cùng 1
Đây là những gì tôi nhận được
(Contract)(Customer) 12345 John Smith 12345 Jane Smith 67890 howard Jones 67890 Mary Jones
Dưới đây là những gì tôi muốn 12345 (chỉ là một trong các khách hàng, jane hoặc john)
Dưới đây là im đang hiện đang sử dụng.
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);
Trong SQL tôi muốn xác định một khoản đầu chọn trong một subquery xác định trên cùng của tôi, tôi chỉ không thể quấn quanh đầu tôi cú pháp cho não người mới LINQ của tôi.
kết quả cuối cùng
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);
Nhờ mọi người giúp đỡ tất cả. Sử dụng khái niệm nhóm tôi đã có thể nhận được kết quả tôi cần. Tôi thực sự di chuyển nhóm teh từ một tuyên bố riêng biệt để nội tuyến trong truy vấn. Đây là kết quả –