@rampprakash I am not entirely following you there.
This is what i currently have:
- I have a EntityReferenceCollection with Cursists ID's (in this case its 1)
- I have a Entity with Training
- I have a EntityCollection with extra costs from that particular training
Is there a easy way to filter the extra costs in the EntityCollection that match the costs related to the cursist (N:N)?
//TRAINING DATA
var opleiding = service.Retrieve(targetEntity.LogicalName, targetEntity.Id, new ColumnSet(true));
//YEARLY BUDGET CURSIST DATA
ConditionExpression ceYearlyBudgetFromTrainee = new ConditionExpression("cref8_cursist", ConditionOperator.Equal, relatedEntity.Id);
ConditionExpression ceYearlyBudgetYear = new ConditionExpression("cref8_jaar", ConditionOperator.Equal, opleiding.Attributes.FirstOrDefault(q => q.Key == "cref8_jaarstartopleiding").Value);
FilterExpression filter = new FilterExpression();
filter.Conditions.Add(ceYearlyBudgetFromTrainee);
filter.Conditions.Add(ceYearlyBudgetYear);
QueryExpression qeYearlyBudget = new QueryExpression("cref8_jaarlijkbudget");
qeYearlyBudget.ColumnSet = new ColumnSet(true);
qeYearlyBudget.Criteria.AddFilter(filter);
EntityCollection yearlyBudgetResult = service.RetrieveMultiple(qeYearlyBudget);
//TRAINING DURATION DATA
ConditionExpression ceOpleidingDuratie = new ConditionExpression("cref8_opleidingduratie", ConditionOperator.Equal, targetEntity.Id);
QueryExpression qeOpleidingDuratie = new QueryExpression("cref8_duratie");
qeOpleidingDuratie.ColumnSet = new ColumnSet(true);
qeOpleidingDuratie.Criteria.AddCondition(ceOpleidingDuratie);
EntityCollection opleidingDuratieResult = service.RetrieveMultiple(qeOpleidingDuratie);
//TRAINING EXTRA COSTS DATA
ConditionExpression ceOpleidingExtraKost = new ConditionExpression("cref8_extrakosttraining", ConditionOperator.Equal, targetEntity.Id);
QueryExpression qeOpleidingExtraKost = new QueryExpression("cref8_extrakost");
qeOpleidingExtraKost.ColumnSet = new ColumnSet(true);
qeOpleidingExtraKost.Criteria.AddCondition(ceOpleidingExtraKost);
EntityCollection opleidingExtraKostResult = service.RetrieveMultiple(qeOpleidingExtraKost);
// LOGIC TO FILTER OPLEIDINGEXTRAKOSTRESULT SO IT MATCHES THE EXTRA COSTS RELATED TO THE CURSIST
//
//cref8_extrakost TABLE
//cref8_cursist TABLE
//cref8_ExtraKost_cref8_Cursist_cref8_Cursi N:N RELATION
//
// SOME STUFF I TRIED ALREADY
//string entity1 = relatedEntity.LogicalName;
//string entity2 = "cref8_extrakost";
//string relationshipNamee = "cref8_ExtraKost_cref8_Cursist_cref8_Cursi";
//QueryExpression query = new QueryExpression(entity1);
//LinkEntity linkEntity1 = new LinkEntity(entity1, relationshipNamee, "cref8_cursistid", "cref8_cursistid", JoinOperator.Inner);
//LinkEntity linkEntity2 = new LinkEntity(relationshipNamee, entity2, "cref8_extrakostid", "cref8_extrakostid", JoinOperator.Inner);
//linkEntity1.LinkEntities.Add(linkEntity2);
//query.LinkEntities.Add(linkEntity1);
//var data = service.RetrieveMultiple(query);
//QueryExpression x = new QueryExpression();
//x.EntityName = "cref8_extrakost";
//x.ColumnSet = new ColumnSet(true);
//x.LinkEntities.Add(new LinkEntity("cref8_cursist", "cref8_ExtraKost_cref8_Cursist_cref8_Cursi", "cref8_cursistid", "cref8_cursistid", JoinOperator.Inner));
//x.LinkEntities[0].Columns.AddColumns("cref8_prijs", "cref8_name");
//x.Criteria = new FilterExpression();
//x.Criteria.AddCondition("cref8_cursistid", ConditionOperator.Equal, relatedEntity.Id);
//x.Orders.Add(new OrderExpression("cref8_fullname", OrderType.Descending));
//x.Distinct = true;
//EntityCollection ec = service.RetrieveMultiple(x);
//
Best Regards,
Anthony