Exemples de requête LINQ
Date de publication : janvier 2017
S’applique à : Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Cette rubrique contient plusieurs exemples de requêtes LINQ. Pour obtenir l’exemple complet, consultez Exemple : Requêtes LINQ complexes.
Contenu de la rubrique
Clause Where simple
Jointure et clause Where simple
Utiliser l’opérateur Distinct
Jointure interne simple
Jointure réflexive
Jointures doubles et multiples
Joindre à l’aide de champs d’entités
Jointure gauche à liaison tardive
Utiliser l’opérateur Equals
Utiliser l’opérateur Not Equals
Utiliser une requête LINQ basée sur une méthode avec une clause Where
Utiliser l’opérateur Greater Than
Utiliser les opérateurs Greater Than or Equals et Less Than or Equals
Utiliser l’opérateur Contains
Utiliser l’opérateur Does Not Contain
Utiliser les opérateurs StartsWith et EndsWith
Utiliser les opérateurs And et Or
Utiliser l’opérateur OrderBy
Utiliser les opérateurs First et Single
Récupération des valeurs mises en forme
Utiliser les opérateurs Skip et Take sans pagination
Utiliser les opérateurs FirstOrDefault et SingleOrDefault
Utiliser une jointure réflexive avec une condition sur l’entité liée
Utiliser une transformation dans la clause Where
Utiliser un tri de pagination
Récupérer des colonnes d’entité associées pour les relations de type 1 à N
Utiliser .Value pour récupérer la valeur d’un attribut
Projections multiples, cast d’un nouveau type de données vers différents types
Utiliser la méthode GetAttributeValue
Utiliser les méthodes Math
Utiliser plusieurs clauses Select et Where
Utiliser SelectMany
Utiliser les opérations de chaîne
Utiliser deux clauses Where
Utiliser LoadProperty pour récupérer des enregistrements associés
Clause Where simple
L’exemple suivant montre comment récupérer une liste de comptes où Name contient « Contoso ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_where1 = from a in svcContext.AccountSet
where a.Name.Contains("Contoso")
select a;
foreach (var a in query_where1)
{
System.Console.WriteLine(a.Name + " " + a.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_where1 = From c In svcContext.AccountSet _
Where c.Name.Contains("Contoso") _
Select c
For Each c In query_where1
Console.WriteLine(c.Name & " " & c.Address1_City)
Next c
End Using
L’exemple suivant montre comment récupérer une liste de comptes où Name contient « Contoso » et Address1_City a la valeur « Redmond ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_where2 = from a in svcContext.AccountSet
where a.Name.Contains("Contoso")
where a.Address1_City == "Redmond"
select a;
foreach (var a in query_where2)
{
System.Console.WriteLine(a.Name + " " + a.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_where2 = From c In svcContext.AccountSet _
Where c.Name.Contains("Contoso") _
Where c.Address1_City.Equals("Redmond") _
Select c
For Each c In query_where2
Console.WriteLine(c.Name & " " & c.Address1_City)
Next c
End Using
Jointure et clause Where simple
L’exemple suivant montre comment récupérer le compte Name et le contact LastName où le compte Name contient « Contoso » et le contact LastName contient « Smith » et est le contact principal du compte.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_where3 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
where a.Name.Contains("Contoso")
where c.LastName.Contains("Smith")
select new
{
account_name = a.Name,
contact_name = c.LastName
};
foreach (var c in query_where3)
{
System.Console.WriteLine("acct: " +
c.account_name +
"\t\t\t" +
"contact: " +
c.contact_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_where3 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.account_primary_contact.Id _
Where a.Name.Contains("Contoso") _
Where c.LastName.Contains("Smith") _
Select New With {Key .account_name = a.Name,
Key .contact_name = c.LastName}
For Each c In query_where3
Console.WriteLine("acct: " & c.account_name & vbTab & vbTab _
& vbTab & "contact: " & c.contact_name)
Next c
End Using
Utiliser l’opérateur Distinct
L’exemple suivant montre comment récupérer une liste distincte de noms de contact. Bien qu’il puisse exister des doublons, chaque nom n’est répertorié qu’une seule fois.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_distinct = (from c in svcContext.ContactSet
select c.LastName).Distinct();
foreach (var c in query_distinct)
{
System.Console.WriteLine(c);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_distinct = ( _
From c In svcContext.ContactSet _
Select c.LastName).Distinct()
For Each c In query_distinct
Console.WriteLine(c)
Next c
End Using
Jointure interne simple
L’exemple suivant montre comment récupérer les informations concernant un compte et le contact répertorié comme contact principal du compte.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join1 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
select new
{
c.FullName,
c.Address1_City,
a.Name,
a.Address1_Name
};
foreach (var c in query_join1)
{
System.Console.WriteLine("acct: " +
c.Name +
"\t\t\t" +
"contact: " +
c.FullName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join1 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.account_primary_contact.Id _
Select New With {Key c.FullName, Key c.Address1_City,
Key a.Name, Key a.Address1_Name}
For Each c In query_join1
Console.WriteLine("acct: " & c.Name & vbTab & vbTab _
& vbTab & "contact: " & c.FullName)
Next c
End Using
Jointure réflexive
L’exemple suivant montre comment récupérer les informations concernant les comptes où un compte est le compte parent d’un autre compte.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join5 = from a in svcContext.AccountSet
join a2 in svcContext.AccountSet
on a.ParentAccountId.Id equals a2.AccountId
select new
{
account_name = a.Name,
account_city = a.Address1_City
};
foreach (var c in query_join5)
{
System.Console.WriteLine(c.account_name + " " + c.account_city);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join5 = From a In svcContext.AccountSet _
Join a2 In svcContext.AccountSet _
On a.ParentAccountId.Id Equals a2.AccountId _
Select New With {
Key .account_name = a.Name,
Key .account_city = a.Address1_City
}
For Each c In query_join5
Console.WriteLine(c.account_name & " " & c.account_city)
Next c
End Using
Jointures doubles et multiples
L’exemple suivant montre comment récupérer les informations du compte, contact et prospect où le contact est le contact principal du compte et le prospect était le prospect d’origine du compte.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join4 = from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
join l in svcContext.LeadSet
on a.OriginatingLeadId.Id equals l.LeadId
select new
{
contact_name = c.FullName,
account_name = a.Name,
lead_name = l.FullName
};
foreach (var c in query_join4)
{
System.Console.WriteLine(c.contact_name +
" " +
c.account_name +
" " +
c.lead_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join4 = From a In svcContext.AccountSet _
Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId _
Join l In svcContext.LeadSet _
On a.OriginatingLeadId.Id Equals l.LeadId _
Select New With {Key .contact_name = c.FullName,
Key .account_name = a.Name,
Key .lead_name = l.FullName}
For Each c In query_join4
Console.WriteLine(c.contact_name & " " & c.account_name _
& " " & c.lead_name)
Next c
End Using
L’exemple suivant montre comment récupérer les informations de compte et de contact où un compte est le compte parent d’un autre compte et le contact était le contact principal du compte.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join6 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
join a2 in svcContext.AccountSet
on a.ParentAccountId.Id equals a2.AccountId
select new
{
contact_name = c.FullName,
account_name = a.Name
};
foreach (var c in query_join6)
{
System.Console.WriteLine(c.contact_name + " " + c.account_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join6 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.PrimaryContactId.Id _
Join a2 In svcContext.AccountSet _
On a.ParentAccountId.Id Equals a2.AccountId _
Select New With {Key .contact_name = c.FullName,
Key .account_name = a.Name}
For Each c In query_join6
Console.WriteLine(c.contact_name & " " & c.account_name)
Next c
End Using
Joindre à l’aide de champs d’entités
L’échantillon suivant montre comment récupérer des informations concernant les comptes à partir d’une liste
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var list_join = (from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
where a.Name == "Contoso Ltd" &&
a.Address1_Name == "Contoso Pharmaceuticals"
select a).ToList();
foreach (var c in list_join)
{
System.Console.WriteLine("Account " + list_join[0].Name
+ " and it's primary contact "
+ list_join[0].PrimaryContactId.Id);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim list_join = ( _
From a In svcContext.AccountSet _
Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId _
Where a.Name.Equals("Contoso Ltd") _
And a.Address1_Name.Equals("Contoso Pharmaceuticals") _
Select a).ToList()
For Each c In list_join
Console.WriteLine("Account " & list_join(0).Name _
& " and it's primary contact " _
& list_join(0).PrimaryContactId.Id.ToString())
Next c
End Using
Jointure gauche à liaison tardive
L’exemple suivant illustre une jointure gauche. Une jointure gauche est conçue pour retourner les parents avec et sans les enfants à partir de deux sources. Il existe une corrélation entre le parent et l’enfant, mais aucun enfant ne peut exister réellement.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_join8 = from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
into gr
from c_joined in gr.DefaultIfEmpty()
select new
{
contact_name = c_joined.FullName,
account_name = a.Name
};
foreach (var c in query_join8)
{
System.Console.WriteLine(c.contact_name + " " + c.account_name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_join8 = From a In svcContext.AccountSet _
Group Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId Into gr = _
Group From c_joined In gr.DefaultIfEmpty() _
Select New With {Key .contact_name = c_joined.FullName,
Key .account_name = a.Name}
For Each c In query_join8
Console.WriteLine(c.contact_name & " " & c.account_name)
Next c
End Using
Utiliser l’opérateur Equals
L’exemple suivant montre comment récupérer une liste de contacts où FirstName a la valeur « Colin ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_equals1 = from c in svcContext.ContactSet
where c.FirstName.Equals("Colin")
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_equals1)
{
System.Console.WriteLine(c.FirstName +
" " + c.LastName +
" " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_equals1 = From c In svcContext.ContactSet _
Where c.FirstName.Equals("Colin") _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_equals1
Console.WriteLine(c.FirstName & " " & c.LastName & " " _
& c.Address1_City)
Next c
End Using
L’échantillon suivant montre comment récupérer une liste de contacts où FamilyStatusCode a la valeur 3. Cela correspond à l'option État civil de Divorcé(e).
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_equals2 = from c in svcContext.ContactSet
where c.FamilyStatusCode.Equals(3)
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_equals2)
{
System.Console.WriteLine(c.FirstName +
" " + c.LastName +
" " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_equals2 = From c In svcContext.ContactSet _
Where c.FamilyStatusCode.Equals(3) _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_equals2
Console.WriteLine(c.FirstName & " " & c.LastName & " " _
& c.Address1_City)
Next c
End Using
Utiliser l’opérateur Not Equals
L’exemple suivant montre comment récupérer une liste de contacts où Address1_City n’a pas la valeur « Redmond ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_ne1 = from c in svcContext.ContactSet
where c.Address1_City != "Redmond"
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_ne1)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_ne1 = From c In svcContext.ContactSet _
Where c.Address1_City IsNot "Redmond" _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_ne1
Console.WriteLine(c.FirstName & " " & c.LastName _
& " " & c.Address1_City)
Next c
End Using
L’exemple suivant montre comment récupérer une liste de contacts où FirstName n’a pas la valeur « Colin ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_ne2 = from c in svcContext.ContactSet
where !c.FirstName.Equals("Colin")
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_ne2)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_ne2 = From c In svcContext.ContactSet _
Where (Not c.FirstName.Equals("Colin")) _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_ne2
Console.WriteLine(c.FirstName & " " & c.LastName & " " _
& c.Address1_City)
Next c
End Using
Utiliser une requête LINQ basée sur une méthode avec une clause Where
L’exemple suivant montre comment récupérer une liste de contacts où LastName a la valeur « Smith » ou contient « Smi ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var methodResults = svcContext.ContactSet
.Where(a => a.LastName == "Smith");
var methodResults2 = svcContext.ContactSet
.Where(a => a.LastName.StartsWith("Smi"));
Console.WriteLine();
Console.WriteLine("Method query using Lambda expression");
Console.WriteLine("---------------------------------------");
foreach (var a in methodResults)
{
Console.WriteLine("Name: " + a.FirstName + " " + a.LastName);
}
Console.WriteLine("---------------------------------------");
Console.WriteLine("Method query 2 using Lambda expression");
Console.WriteLine("---------------------------------------");
foreach (var a in methodResults2)
{
Console.WriteLine("Name: " + a.Attributes["firstname"] +
" " + a.Attributes["lastname"]);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim methodResults = svcContext.ContactSet _
.Where(Function(a) a.LastName.Equals("Smith"))
Dim methodResults2 = svcContext.ContactSet _
.Where(Function(a) a.LastName.StartsWith("Smi"))
Console.WriteLine()
Console.WriteLine("Method query using Lambda expression")
Console.WriteLine("---------------------------------------")
For Each a In methodResults
Console.WriteLine("Name: " & a.FirstName & " " & a.LastName)
Next a
Console.WriteLine("---------------------------------------")
Console.WriteLine("Method query 2 using Lambda expression")
Console.WriteLine("---------------------------------------")
For Each a In methodResults2
Console.WriteLine("Name: " & a.Attributes("firstname").ToString() _
& " " & a.Attributes("lastname").ToString())
Next a
End Using
Utiliser l’opérateur Greater Than
L’exemple suivant montre comment récupérer une liste de contacts avec une date Anniversary postérieure au 5 février 2010.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_gt1 = from c in svcContext.ContactSet
where c.Anniversary > new DateTime(2010, 2, 5)
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_gt1)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_gt1 = From c In svcContext.ContactSet _
Where c.Anniversary > New Date(2010, 2, 5) _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_gt1
Console.WriteLine(c.FirstName & " " & c.LastName _
& " " & c.Address1_City)
Next c
End Using
L’exemple suivant montre comment récupérer des contacts avec une valeur CreditLimit supérieure à 20 000 USD.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_gt2 = from c in svcContext.ContactSet
where c.CreditLimit.Value > 20000
select new
{
c.FirstName,
c.LastName,
c.Address1_City
};
foreach (var c in query_gt2)
{
System.Console.WriteLine(c.FirstName + " " +
c.LastName + " " + c.Address1_City);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_gt2 = From c In svcContext.ContactSet _
Where c.CreditLimit.Value > 20000 _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.Address1_City}
For Each c In query_gt2
Console.WriteLine(c.FirstName & " " & c.LastName _
& " " & c.Address1_City)
Next c
End Using
Utiliser les opérateurs Greater Than or Equals et Less Than or Equals
L’exemple suivant montre comment récupérer des contacts avec une valeur CreditLimit supérieure à 200 USD et inférieure à 400 USD.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_gele1 = from c in svcContext.ContactSet
where c.CreditLimit.Value >= 200 &&
c.CreditLimit.Value <= 400
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_gele1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_gele1 = From c In svcContext.ContactSet _
Where c.CreditLimit.Value >= 200 _
AndAlso c.CreditLimit.Value <= 400 _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_gele1
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
Utiliser l’opérateur Contains
L’exemple suivant montre comment récupérer des contacts où Description contient « Alpine ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_contains1 = from c in svcContext.ContactSet
where c.Description.Contains("Alpine")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_contains1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_contains1 = From c In svcContext.ContactSet _
Where c.Description.Contains("Alpine") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_contains1
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
Utiliser l’opérateur Does Not Contain
L’exemple suivant montre comment récupérer des contacts où Description ne contient pas « Coho ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_contains2 = from c in svcContext.ContactSet
where !c.Description.Contains("Coho")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_contains2)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_contains2 = From c In svcContext.ContactSet _
Where (Not c.Description.Contains("Coho")) _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_contains2
Console.WriteLine(c.FirstName.ToString() & " " _
& c.LastName.ToString())
Next c
End Using
Utiliser les opérateurs StartsWith et EndsWith
L’exemple suivant montre comment récupérer des contacts où FirstName commence par « Bri ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_startswith1 = from c in svcContext.ContactSet
where c.FirstName.StartsWith("Bri")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_startswith1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_startswith1 = From c In svcContext.ContactSet _
Where c.FirstName.StartsWith("Bri") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_startswith1
Console.WriteLine(c.FirstName.ToString() & " " _
& c.LastName.ToString())
Next c
End Using
L’exemple suivant montre comment récupérer des contacts où LastName se termine par « cox ».
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_endswith1 = from c in svcContext.ContactSet
where c.LastName.EndsWith("cox")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_endswith1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_endswith1 = From c In svcContext.ContactSet _
Where c.LastName.EndsWith("cox") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_endswith1
Console.WriteLine(c.FirstName.ToString() & " " _
& c.LastName.ToString())
Next c
End Using
Utiliser les opérateurs And et Or
L’exemple suivant montre comment récupérer des contacts où Address1_City a la valeur « Redmond » ou « Bellevue » et CreditLimit a une valeur supérieure à 200 USD.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_andor1 = from c in svcContext.ContactSet
where ((c.Address1_City == "Redmond" ||
c.Address1_City == "Bellevue") &&
(c.CreditLimit.Value != null &&
c.CreditLimit.Value >= 200))
select c;
foreach (var c in query_andor1)
{
System.Console.WriteLine(c.LastName + ", " + c.FirstName + " " +
c.Address1_City + " " + c.CreditLimit.Value);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_andor1 = From c In svcContext.ContactSet _
Where c.Address1_City.Equals("Redmond") _
OrElse c.Address1_City.Equals("Bellevue") _
AndAlso c.CreditLimit.Value >= 200 _
Select New With {Key c.FirstName,
Key c.LastName,
Key c.CreditLimit,
Key c.Address1_City}
For Each c In query_andor1
Console.WriteLine(c.LastName.ToString() & ", " _
& c.FirstName.ToString() & " " _
& c.Address1_City.ToString() & " " _
& c.CreditLimit.Value.ToString())
Next c
End Using
Utiliser l’opérateur OrderBy
L’exemple suivant montre comment récupérer des contacts classés par CreditLimit dans l’ordre décroissant.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_orderby1 = from c in svcContext.ContactSet
where !c.CreditLimit.Equals(null)
orderby c.CreditLimit descending
select new
{
limit = c.CreditLimit,
first = c.FirstName,
last = c.LastName
};
foreach (var c in query_orderby1)
{
System.Console.WriteLine(c.limit.Value + " " +
c.last + ", " + c.first);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_orderby1 = From c In svcContext.ContactSet _
Where (Not c.CreditLimit.Equals(Nothing)) _
Order By c.CreditLimit Descending _
Select New With {Key .limit = c.CreditLimit,
Key .first = c.FirstName,
Key .last = c.LastName}
For Each c In query_orderby1
Console.WriteLine(c.limit.Value & " " & c.last & ", " _
& c.first)
Next c
End Using
L’exemple suivant montre comment récupérer des contacts classés par LastName dans l’ordre décroissant et par FirstName dans l’ordre croissant.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_orderby2 = from c in svcContext.ContactSet
orderby c.LastName descending,
c.FirstName ascending
select new
{
first = c.FirstName,
last = c.LastName
};
foreach (var c in query_orderby2)
{
System.Console.WriteLine(c.last + ", " + c.first);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_orderby2 = From c In svcContext.ContactSet _
Order By c.LastName Descending, _
c.FirstName Ascending _
Select New With {Key .first = c.FirstName,
Key .last = c.LastName}
For Each c In query_orderby2
Console.WriteLine(c.last & ", " & c.first)
Next c
End Using
Utiliser les opérateurs First et Single
L’exemple suivant montre comment récupérer uniquement le premier enregistrement de contact retourné et récupérer un seul enregistrement de contact qui répond aux critères.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
Contact firstcontact = svcContext.ContactSet.First();
Contact singlecontact = svcContext.ContactSet.Single(c => c.ContactId == _contactId1);
System.Console.WriteLine(firstcontact.LastName + ", " +
firstcontact.FirstName + " is the first contact");
System.Console.WriteLine("==========================");
System.Console.WriteLine(singlecontact.LastName + ", " +
singlecontact.FirstName + " is the single contact");
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim firstcontact As Contact = svcContext.ContactSet _
.First()
Console.WriteLine(firstcontact.LastName & ", " _
& firstcontact.FirstName _
& " is the first contact")
Console.WriteLine("==========================")
Dim singlecontact As Contact =
svcContext.ContactSet _
.Single(Function(c) c.ContactId.Value.Equals(_contactId1))
Console.WriteLine(singlecontact.LastName & ", " _
& singlecontact.FirstName _
& " is the single contact")
End Using
Récupération des valeurs mises en forme
L’exemple suivant montre comment récupérer l’étiquette d’une option optionset, dans ce cas, la valeur du statut d’enregistrement actuel.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var list_retrieve1 = from c in svcContext.ContactSet
where c.ContactId == _contactId1
select new { StatusReason = c.FormattedValues["statuscode"] };
foreach (var c in list_retrieve1)
{
System.Console.WriteLine("Status: " + c.StatusReason);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim list_retrieve1 = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId1) _
Select New With
{Key .StatusReason =
c.FormattedValues("statuscode")}
For Each c In list_retrieve1
Console.WriteLine("Status: " & c.StatusReason)
Next c
End Using
Utiliser les opérateurs Skip et Take sans pagination
L’exemple suivant montre comment récupérer uniquement deux enregistrements après avoir ignoré deux enregistrements où LastName n’a pas la valeur « Parker » à l’aide des opérateurs Skip et Take.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_skip = (from c in svcContext.ContactSet
where c.LastName != "Parker"
orderby c.FirstName
select new
{
last = c.LastName,
first = c.FirstName
}).Skip(2).Take(2);
foreach (var c in query_skip)
{
System.Console.WriteLine(c.first + " " + c.last);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_skip = ( _
From c In svcContext.ContactSet _
Where c.LastName IsNot "Parker" _
Order By c.FirstName _
Select New With {Key .last = c.LastName,
Key .first = c.FirstName}).Skip(2).Take(2)
For Each c In query_skip
Console.WriteLine(c.first & " " & c.last)
Next c
End Using
Utiliser les opérateurs FirstOrDefault et SingleOrDefault
L’opérateur FirstOrDefault retourne le premier élément d’une séquence ou une valeur par défaut si aucun élément n’est trouvé. L’opérateur SingleOrDefault retourne un seul élément spécifique d’une séquence ou une valeur par défaut si cet élément n’est pas trouvé. L’exemple suivant montre comment utiliser ces opérateurs.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
Contact firstorcontact = svcContext.ContactSet.FirstOrDefault();
Contact singleorcontact = svcContext.ContactSet
.SingleOrDefault(c => c.ContactId == _contactId1);
System.Console.WriteLine(firstorcontact.FullName +
" is the first contact");
System.Console.WriteLine("==========================");
System.Console.WriteLine(singleorcontact.FullName +
" is the single contact");
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim firstorcontact As Contact =
svcContext.ContactSet.FirstOrDefault()
Console.WriteLine(firstorcontact.FullName & " is the first contact")
Console.WriteLine("==========================")
Dim singleorcontact As Contact =
svcContext.ContactSet _
.SingleOrDefault(Function(c) c.ContactId.Value.Equals(_contactId1))
Console.WriteLine(singleorcontact.FullName & " is the single contact")
End Using
Utiliser une jointure réflexive avec une condition sur l’entité liée
L’exemple suivant montre comment récupérer les noms de deux comptes où un compte est le compte parent de l’autre.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_joincond = from a1 in svcContext.AccountSet
join a2 in svcContext.AccountSet
on a1.ParentAccountId.Id equals a2.AccountId
where a2.AccountId == _accountId1
select new { Account = a1, Parent = a2 };
foreach (var a in query_joincond)
{
System.Console.WriteLine(a.Account.Name + " " + a.Parent.Name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_joincond = From a1 In svcContext.AccountSet _
Join a2 In svcContext.AccountSet _
On a1.ParentAccountId.Id Equals a2.AccountId _
Where a2.AccountId.Value.Equals(_accountId1) _
Select New With {Key .Account = a1,
Key .Parent = a2}
For Each a In query_joincond
Console.WriteLine(a.Account.Name & " " & a.Parent.Name)
Next a
End Using
Utiliser une transformation dans la clause Where
L’exemple suivant montre comment récupérer un contact spécifique dont la date d’anniversaire est postérieure au 1er janvier 2010.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_wheretrans = from c in svcContext.ContactSet
where c.ContactId == _contactId1 &&
c.Anniversary > DateTime.Parse("1/1/2010")
select new
{
c.FirstName,
c.LastName
};
foreach (var c in query_wheretrans)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_wheretrans = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId1) _
AndAlso c.Anniversary > Date.Parse("1/1/2010") _
Select New With {Key c.FirstName,
Key c.LastName}
For Each c In query_wheretrans
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
Utiliser un tri de pagination
L’exemple suivant illustre un tri sur plusieurs colonnes avec une condition supplémentaire.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_pagingsort1 = (from c in svcContext.ContactSet
where c.LastName != "Parker"
orderby c.LastName ascending,
c.FirstName descending
select new { c.FirstName, c.LastName })
.Skip(2).Take(2);
foreach (var c in query_pagingsort1)
{
System.Console.WriteLine(c.FirstName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_pagingsort1 = ( _
From c In svcContext.ContactSet _
Where c.LastName IsNot "Parker" _
Order By c.LastName Ascending, c.FirstName Descending _
Select New With {Key c.FirstName,
Key c.LastName}).Skip(2).Take(2)
For Each c In query_pagingsort1
Console.WriteLine(c.FirstName & " " & c.LastName)
Next c
End Using
L’exemple suivant illustre un tri de pagination où la colonne triée est différente de la colonne récupérée.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_pagingsort2 = (from c in svcContext.ContactSet
where c.LastName != "Parker"
orderby c.FirstName descending
select new { c.FirstName }).Skip(2).Take(2);
foreach (var c in query_pagingsort2)
{
System.Console.WriteLine(c.FirstName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_pagingsort2 = ( _
From c In svcContext.ContactSet _
Where c.LastName IsNot "Parker" _
Order By c.FirstName Descending _
Select New With {Key c.FirstName}).Skip(2).Take(2)
For Each c In query_pagingsort2
Console.WriteLine(c.FirstName)
Next c
End Using
L’exemple suivant montre comment récupérer les 10 premiers enregistrements.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_pagingsort3 = (from c in svcContext.ContactSet
where c.LastName.StartsWith("W")
orderby c.MiddleName ascending,
c.FirstName descending
select new
{
c.FirstName,
c.MiddleName,
c.LastName
}).Take(10);
foreach (var c in query_pagingsort3)
{
System.Console.WriteLine(c.FirstName + " " +
c.MiddleName + " " + c.LastName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_pagingsort3 = ( _
From c In svcContext.ContactSet _
Where c.LastName.StartsWith("W") _
Order By c.MiddleName Ascending, c.FirstName Descending _
Select New With {Key c.FirstName,
Key c.MiddleName,
Key c.LastName}).Take(10)
For Each c In query_pagingsort3
Console.WriteLine(c.FirstName & " " & c.MiddleName & " " & c.LastName)
Next c
End Using
Récupérer des colonnes d’entité associées pour les relations de type 1 à N
L’exemple suivant montre comment récupérer des colonnes d’enregistrements de compte et de contact associés.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_retrieve1 = from c in svcContext.ContactSet
join a in svcContext.AccountSet
on c.ContactId equals a.PrimaryContactId.Id
where c.ContactId != _contactId1
select new { Contact = c, Account = a };
foreach (var c in query_retrieve1)
{
System.Console.WriteLine("Acct: " + c.Account.Name +
"\t\t" + "Contact: " + c.Contact.FullName);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_retrieve1 = From c In svcContext.ContactSet _
Join a In svcContext.AccountSet _
On c.ContactId Equals a.PrimaryContactId.Id _
Where Not c.ContactId.Value.Equals(_contactId1) _
Select New With {Key .Contact = c,
Key .Account = a}
For Each c In query_retrieve1
Console.WriteLine("Acct: " & c.Account.Name & vbTab & vbTab _
& "Contact: " & c.Contact.FullName)
Next c
End Using
Utiliser .Value pour récupérer la valeur d’un attribut
L’exemple suivant illustre l’utilisation de Value pour accéder à la valeur d’un attribut.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_value = from c in svcContext.ContactSet
where c.ContactId != _contactId2
select new
{
ContactId = c.ContactId != null ?
c.ContactId.Value : Guid.Empty,
NumberOfChildren = c.NumberOfChildren != null ?
c.NumberOfChildren.Value : default(int),
CreditOnHold = c.CreditOnHold != null ?
c.CreditOnHold.Value : default(bool),
Anniversary = c.Anniversary != null ?
c.Anniversary.Value : default(DateTime)
};
foreach (var c in query_value)
{
System.Console.WriteLine(c.ContactId + " " + c.NumberOfChildren +
" " + c.CreditOnHold + " " + c.Anniversary);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_value = From c In svcContext.ContactSet _
Where Not c.ContactId.Value.Equals(_contactId2) _
Select New With
{Key .ContactId = If(
c.ContactId IsNot Nothing,
c.ContactId.Value,
Guid.Empty),
Key .NumberOfChildren = If(
c.NumberOfChildren IsNot Nothing,
c.NumberOfChildren.Value, Nothing),
Key .CreditOnHold = If(
c.CreditOnHold IsNot Nothing,
c.CreditOnHold.Value,
Nothing),
Key .Anniversary = If(
c.Anniversary IsNot Nothing,
c.Anniversary.Value,
Nothing)}
For Each c In query_value
Console.WriteLine(c.ContactId.ToString() & " " _
& c.NumberOfChildren & " " _
& c.CreditOnHold & " " & c.Anniversary)
Next c
End Using
Projections multiples, cast d’un nouveau type de données vers différents types
L’exemple suivant illustre les projections multiples et montre comment effectuer un cast des valeurs vers un autre type.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_projections = from c in svcContext.ContactSet
where c.ContactId == _contactId1
&& c.NumberOfChildren != null &&
c.Anniversary.Value != null
select new
{
Contact = new Contact {
LastName = c.LastName,
NumberOfChildren = c.NumberOfChildren
},
NumberOfChildren = (double)c.NumberOfChildren,
Anniversary = c.Anniversary.Value.AddYears(1),
};
foreach (var c in query_projections)
{
System.Console.WriteLine(c.Contact.LastName + " " +
c.NumberOfChildren + " " + c.Anniversary);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_projections = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId1) _
And Not c.NumberOfChildren.Equals(Nothing) _
And Not c.Anniversary.Equals(Nothing) _
Select New With
{Key .Contact =
New Contact With
{.LastName = c.LastName,
.NumberOfChildren = c.NumberOfChildren},
Key .NumberOfChildren = CDbl(c.NumberOfChildren),
Key .Anniversary = c.Anniversary.Value.AddYears(1)}
For Each c In query_projections
Console.WriteLine(c.Contact.LastName & " " & c.NumberOfChildren _
& " " & c.Anniversary)
Next c
End Using
Utiliser la méthode GetAttributeValue
L’exemple suivant montre comment utiliser la méthode GetAttributeValue<T>.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_getattrib = from c in svcContext.ContactSet
where c.GetAttributeValue<Guid>("contactid") != _contactId1
select new
{
ContactId = c.GetAttributeValue<Guid?>("contactid"),
NumberOfChildren = c.GetAttributeValue<int?>("numberofchildren"),
CreditOnHold = c.GetAttributeValue<bool?>("creditonhold"),
Anniversary = c.GetAttributeValue<DateTime?>("anniversary"),
};
foreach (var c in query_getattrib)
{
System.Console.WriteLine(c.ContactId + " " + c.NumberOfChildren +
" " + c.CreditOnHold + " " + c.Anniversary);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_getattrib = From c In svcContext.ContactSet _
Where Not c.GetAttributeValue(Of Guid)("contactid").Equals( _
_contactId1) _
Select New With
{Key .ContactId =
c.GetAttributeValue(Of Guid?)("contactid"),
Key .NumberOfChildren =
c.GetAttributeValue(Of Integer?)("numberofchildren"),
Key .CreditOnHold =
c.GetAttributeValue(Of Boolean?)("creditonhold"),
Key .Anniversary =
c.GetAttributeValue(Of Date?)("anniversary")}
For Each c In query_getattrib
Console.WriteLine(c.ContactId.ToString() & " " _
& c.NumberOfChildren & " " & c.CreditOnHold _
& " " & c.Anniversary)
Next c
End Using
Utiliser les méthodes Math
L’exemple suivant montre comment utiliser différentes méthodes Math.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_math = from c in svcContext.ContactSet
where c.ContactId != _contactId2
&& c.Address1_Latitude != null &&
c.Address1_Longitude != null
select new
{
Round = Math.Round(c.Address1_Latitude.Value),
Floor = Math.Floor(c.Address1_Latitude.Value),
Ceiling = Math.Ceiling(c.Address1_Latitude.Value),
Abs = Math.Abs(c.Address1_Latitude.Value),
};
foreach (var c in query_math)
{
System.Console.WriteLine(c.Round + " " + c.Floor +
" " + c.Ceiling + " " + c.Abs);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_math = From c In svcContext.ContactSet _
Where Not c.ContactId.Value.Equals(_contactId2) _
AndAlso c.Address1_Latitude IsNot Nothing _
AndAlso c.Address1_Longitude IsNot Nothing _
Select New With
{Key .Round =
Math.Round(c.Address1_Latitude.Value),
Key .Floor =
Math.Floor(c.Address1_Latitude.Value),
Key .Ceiling =
Math.Ceiling(c.Address1_Latitude.Value),
Key .Abs =
Math.Abs(c.Address1_Latitude.Value)}
For Each c In query_math
Console.WriteLine(c.Round & " " & c.Floor & " " _
& c.Ceiling & " " & c.Abs)
Next c
End Using
Utiliser plusieurs clauses Select et Where
L’exemple suivant illustre plusieurs clauses Select et Where avec une syntaxe de requête basée sur une méthode.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_multiselect = svcContext.IncidentSet
.Where(i => i.IncidentId != _incidentId1)
.Select(i => i.incident_customer_accounts)
.Where(a => a.AccountId != _accountId2)
.Select(a => a.account_primary_contact)
.OrderBy(c => c.FirstName)
.Select(c => c.ContactId);
foreach (var c in query_multiselect)
{
System.Console.WriteLine(c.GetValueOrDefault());
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_multiselect =
svcContext.IncidentSet _
.Where(Function(i) Not i.IncidentId.Value.Equals(_incidentId1)) _
.Select(Function(i) i.incident_customer_accounts) _
.Where(Function(a) Not a.AccountId.Value.Equals(_accountId2)) _
.Select(Function(a) a.account_primary_contact) _
.OrderBy(Function(c) c.FirstName).Select(Function(c) c.ContactId)
For Each c In query_multiselect
Console.WriteLine(c.GetValueOrDefault())
Next c
End Using
Utiliser SelectMany
L’exemple suivant montre comment utiliser la méthode SelectMany.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_selectmany = svcContext.ContactSet
.Where(c => c.ContactId != _contactId2)
.SelectMany(c => c.account_primary_contact)
.OrderBy(a => a.Name);
foreach (var c in query_selectmany)
{
System.Console.WriteLine(c.AccountId + " " + c.Name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_selectmany =
svcContext.ContactSet _
.Where(Function(c) Not c.ContactId.Value.Equals(_contactId2)) _
.SelectMany(Function(c) c.account_primary_contact) _
.OrderBy(Function(a) a.Name)
For Each c In query_selectmany
Console.WriteLine(c.AccountId.ToString() & " " & c.Name)
Next c
End Using
Utiliser les opérations de chaîne
L’exemple suivant montre comment utiliser différentes méthodes String.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_string = from c in svcContext.ContactSet
where c.ContactId == _contactId2
select new
{
IndexOf = c.FirstName.IndexOf("contact"),
Insert = c.FirstName.Insert(1, "Insert"),
Remove = c.FirstName.Remove(1, 1),
Substring = c.FirstName.Substring(1, 1),
ToUpper = c.FirstName.ToUpper(),
ToLower = c.FirstName.ToLower(),
TrimStart = c.FirstName.TrimStart(),
TrimEnd = c.FirstName.TrimEnd(),
};
foreach (var c in query_string)
{
System.Console.WriteLine(c.IndexOf + "\n" + c.Insert + "\n" +
c.Remove + "\n" + c.Substring + "\n"
+ c.ToUpper + "\n" + c.ToLower +
"\n" + c.TrimStart + " " + c.TrimEnd);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_string = From c In svcContext.ContactSet _
Where c.ContactId.Value.Equals(_contactId2) _
Select New With
{Key .IndexOf = c.FirstName.IndexOf("contact"),
Key .Insert = c.FirstName.Insert(1, "Insert"),
Key .Remove = c.FirstName.Remove(1, 1),
Key .Substring = c.FirstName.Substring(1, 1),
Key .ToUpper = c.FirstName.ToUpper(),
Key .ToLower = c.FirstName.ToLower(),
Key .TrimStart = c.FirstName.TrimStart(),
Key .TrimEnd = c.FirstName.TrimEnd()}
For Each c In query_string
Console.WriteLine(c.IndexOf & vbLf & c.Insert & vbLf _
& c.Remove & vbLf & c.Substring & vbLf _
& c.ToUpper & vbLf & c.ToLower & vbLf _
& c.TrimStart & " " & c.TrimEnd)
Next c
End Using
Utiliser deux clauses Where
L’exemple suivant montre comment utiliser deux clauses Where.
using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
var query_twowhere = from a in svcContext.AccountSet
join c in svcContext.ContactSet
on a.PrimaryContactId.Id equals c.ContactId
where c.LastName == "Smith" && c.CreditOnHold != null
where a.Name == "Contoso Ltd"
orderby a.Name
select a;
foreach (var c in query_twowhere)
{
System.Console.WriteLine(c.AccountId + " " + c.Name);
}
}
Using svcContext As New ServiceContext(_serviceProxy)
Dim query_twowhere = From a In svcContext.AccountSet _
Join c In svcContext.ContactSet _
On a.PrimaryContactId.Id Equals c.ContactId _
Where c.LastName.Equals("Smith") _
AndAlso c.CreditOnHold IsNot Nothing _
Where a.Name.Equals("Contoso Ltd") _
Order By a.Name _
Select a
For Each c In query_twowhere
Console.WriteLine(c.AccountId.ToString() & " " & c.Name)
Next c
End Using
Utiliser LoadProperty pour récupérer des enregistrements associés
L’exemple suivant montre comment utiliser LoadProperty pour accéder aux enregistrements associés.
Contact benAndrews = svcContext.ContactSet.Where(c => c.FullName == "Ben Andrews").FirstOrDefault();
if (benAndrews != null)
{
//benAndrews.Contact_Tasks is null until LoadProperty is used.
svcContext.LoadProperty(benAndrews, "Contact_Tasks");
Task benAndrewsFirstTask = benAndrews.Contact_Tasks.FirstOrDefault();
if (benAndrewsFirstTask != null)
{
Console.WriteLine("Ben Andrews first task with Subject: '{0}' retrieved.", benAndrewsFirstTask.Subject);
}
}
Voir aussi
Générer des requêtes avec LINQ (Language-Integrated Query .NET)
Exemple : Créer une requête LINQ
Microsoft Dynamics 365
© 2017 Microsoft. Tous droits réservés. Copyright