Выберите таблицу JOIN, используя Linq и QueryExpression - PullRequest
0 голосов
/ 07 ноября 2018

У меня есть это:

QueryExpression query = new QueryExpression("entity1");
query.ColumnSet = new ColumnSet(true);

LinkEntity accountLink = query.AddLink("entity2", "entity1id", "entity1id", JoinOperator.Inner);
accountLink.Columns = new ColumnSet(true);
accountLink.EntityAlias = "e2";

...

EntityCollection entities = service.RetreiveMultiple(query);

Допустим, в query есть больше соединений и условий, но для нас важен именно этот JOIN. Теперь я хочу получить IEnumerable<Entity> с entity2 экземплярами из query. Как мне это сделать? Я думаю об использовании Linq, но я не знаю, как точно написать команду. Я хочу что-то вроде этого:

IEnumerable<Entity> entities2 = from entity in entities.Entities
                                          ?? e2 ???
                                          select ??;

1 Ответ

0 голосов
/ 07 ноября 2018

Вот пример запроса D365 LINQ, включающего объединения с объектами с поздней привязкой:

public JsonResult Offices()
{    
    var connectionString = @"SET YOUR CONNECTION STRING";
    var svc = new CrmServiceClient(connectionString); 
    var list = new List<KeyValuePair<Guid, string>>();
    using (var context = new Microsoft.Xrm.Sdk.Client.OrganizationServiceContext(svc))
    {           
        var result = (from a in context.CreateQuery("account")
                      join o in context.CreateQuery("opportunity")
                      on a.GetAttributeValue<Guid>("accountid") equals o.GetAttributeValue<Guid>("new_igoffice")
                      where a.GetAttributeValue<OptionSetValue>("statecode").Value == 0
                      where o.GetAttributeValue<Guid>("parentaccountid") != Guid.Empty
                      orderby a.GetAttributeValue<string>("name")
                      select new KeyValuePair<Guid, string>(a.GetAttributeValue<Guid>("accountid"), a.GetAttributeValue<string>("name")))
                      .Distinct();

        list.AddRange(result);
    }
    return Json(list, JsonRequestBehavior.AllowGet);
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...