У меня есть 3 списка, к которым я присоединяюсь: Product
s, AcceptedOffer
s и Delivery
s
List<Product> products = new List<Product>() {
new Product(){ Id = 1, Name = "Drink" }
};
List<AcceptedOffer> accepted = new List<AcceptedOffer>() {
new AcceptedOffer(){ Id = 10, ProductId = 1 },
new AcceptedOffer(){ Id = 11, ProductId = 1 }
};
List<Delivery> deliveries = new List<Delivery>() {
new Delivery(){ Id = 101, ProductId = 1, Status = "Success" },
new Delivery(){ Id = 102, ProductId = 1, Status = "Failure"}
};
Я хочу связать поставки с принятыми предложениями, но я могу 't найти способ запроса, который имеет исключительное использование каждого AcceptedOffer / Delivery:
var test = from d in deliveries
join p in products on d.ProductId equals p.Id
join ao in accepted on p.Id equals ao.ProductId
select new { d, p, ao };
Это дает:
Drink | 10 | Success
Drink | 11 | Success
Drink | 10 | Failure
Drink | 11 | Failure
Если я группирую по Принятому предложению, то FirstOrDefault()
обе доставкиудалось;Группировка по доставке и первый AcceptedOffer - это то же самое.
Мне нужно:
Drink | 10 | Success
Drink | 11 | Failure
Что за математика / запрос вуду, которая дает мне исключительное использование каждой стороны?