Compartir a través de


Usar clase de entidad de enlace en tiempo de ejecución con una consulta LINQ

En Microsoft Dataverse puede usar enlaces en tiempo de ejecución con las consulta integradas del lenguaje .NET (LINQ). El enlace en tiempo de ejecución usa el nombre lógico del atributo, y se resuelve en un tiempo de ejecución.

Usar enlace tardío en una cláusula JOIN

Los siguientes ejemplos muestran cómo usar el enlace en tiempo de ejecución en la cláusula de join de una consulta de LINQ.

Recuperar el nombre completo del contacto que representa el contacto principal de una cuenta y el nombre de la cuenta.

using (OrganizationServiceContext orgSvcContext = new OrganizationServiceContext(_serviceProxy))
{
var query_join2 = from c in orgSvcContext.CreateQuery("contact")
                  join a in orgSvcContext.CreateQuery("account")
                  on c["contactid"] equals a["primarycontactid"]
                  select new
                  {
                   contact_name = c["fullname"],
                   account_name = a["name"]
                  };
foreach (var c in query_join2)
{
 System.Console.WriteLine(c.contact_name + "  " + c.account_name);
}
}

Recupere los datos del contacto, de la cuenta y de los clientes potenciales donde el cliente potencial fue el cliente potencial original y el apellidos del contacto no es "Parker"

using (OrganizationServiceContext orgSvcContext = new OrganizationServiceContext(_serviceProxy))
{
var query_dejoin = from c in orgSvcContext.CreateQuery("contact")
                   join a in orgSvcContext.CreateQuery("account") 
                   on c["contactid"] equals a["primarycontactid"]
                   join l in orgSvcContext.CreateQuery("lead") 
                   on a["originatingleadid"] equals l["leadid"]
                   where (string)c["lastname"] != "Parker"
                   select new { Contact = c, Account = a, Lead = l };
foreach (var c in query_dejoin)
{
 System.Console.WriteLine(c.Account.Attributes["name"] + " " + 
  c.Contact.Attributes["fullname"] + " " + c.Lead.Attributes["leadid"]);
}
}

Usar enlace tardío en una COMBINACIÓN izquierda

En el siguiente ejemplo se muestra cómo recuperar una lista de información de contacto y de la cuenta con una combinación izquierda. Una combinación izquierda está diseñada para devolver elementos principales con y sin elementos secundarios desde dos orígenes. Existe una correlación entre los elementos principales y los elementos secundarios, pero es posible que no existan elementos secundarios

using (OrganizationServiceContext orgSvcContext = new OrganizationServiceContext(_serviceProxy))
{
var query_join9 = from a in orgSvcContext.CreateQuery("account")
                  join c in orgSvcContext.CreateQuery("contact") 
                  on a["primarycontactid"] equals c["contactid"] into gr
                  from c_joined in gr.DefaultIfEmpty()
                  select new
                  {
                   account_name = a.Attributes["name"]
                  };
foreach (var c in query_join9)
{
 System.Console.WriteLine(c.account_name);
}
}

Uso del enlace en tiempo de compilación y del método Contains

El siguiente ejemplo muestran cómo usar el enlace en tiempo de ejecución con el método de Contains de una consulta de LINQ.

using (OrganizationServiceContext orgSvcContext = new OrganizationServiceContext(_serviceProxy))
{
var query_contains3 = from c in orgSvcContext.CreateQuery("contact")
                      where ((string)c["description"]).Contains("Coho")
                      select new
                      {
                       firstname = c.Attributes["firstname"],
                       lastname = c.Attributes["lastname"]
                      };
foreach (var c in query_contains3)
{
 System.Console.WriteLine(c.firstname + " " + c.lastname);
}
}

Uso de enlace tardío y operador NOT igual

El siguiente muestra cómo usar el operador Not Equals.

using (OrganizationServiceContext orgSvcContext = new OrganizationServiceContext(_serviceProxy))
{
var query_ne3 = from c in orgSvcContext.CreateQuery("contact")
                where !c["address1_city"].Equals(null)
                select new
                {
                 FirstName = c["firstname"],
                 LastName = c["lastname"],
                 Address1_City = c["address1_city"]
                };
foreach (var c in query_ne3)
{
 System.Console.WriteLine(c.FirstName + " " + 
  c.LastName + " " + c.Address1_City);
}
}

Uso del método de GetAttributeValue

En el siguiente ejemplo se muestra cómo recuperar la información de contacto mediante el método de GetAttributeValue.

using (OrganizationServiceContext orgSvcContext = new OrganizationServiceContext(_serviceProxy))
{

var list_getattrib1 = (from c in orgSvcContext.CreateQuery("contact")
                       where c.GetAttributeValue<Guid?>("contactid") != _contactId1
                       select new { 
                        FirstName = c.GetAttributeValue<string>("firstname"), 
                        LastName = c.GetAttributeValue<string>("lastname") 
                       }).ToList();
foreach (var c in list_getattrib1)
{
 System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}

Vea también

Crear consultas con LINQ (.NET Language-Integrated Query)
Ordene los resultados usando columnas de tabla con LINQ
CreateQuery<TEntity>()

Nota

¿Puede indicarnos sus preferencias de idioma de documentación? Realice una breve encuesta. (tenga en cuenta que esta encuesta está en inglés)

La encuesta durará unos siete minutos. No se recopilan datos personales (declaración de privacidad).