Bruge LINQ til at oprette en forespørgsel
Udgivet: januar 2017
Gælder for: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online
Forespørgselsudbyderen .NET-sprogintegreret forespørgsel (LINQ) i Microsoft Dynamics 365 (online og i det lokale miljø) bruger LINQ-standardsyntaks. Det første trin i oprettelsen af en forespørgsel i LINQ er at identificere de relevante objekttyper og deres indbyrdes relationer. Du kan derefter angive datakilden og de andre forespørgselsparametre.
Delsætningen from bruges til at returnere et enkelt "rod"-objekt. Forespørgselsudbyderen kan kun returnere objekter af en enkelt objekttype. Delsætningerne orderby og select skal referere til dette rodobjekt. Du kan bruge join -delsætninger til at føje objekter med en relation til objektet "rod".
Dette emne indeholder
LINQ-operatorer
LINQ-begrænsninger
Filtrer flere objekter
LINQ-operatorer
Alle LINQ-forespørgselsudtryk har samme format. Følgende tabel viser de mest almindelige delsætninger i et LINQ-forespørgselsudtryk, når du bruger Microsoft Dynamics 365 LINQ-forespørgselsudbyderen.
LINQ-operator |
Beskrivelse |
Eksempel |
---|---|---|
Få en datakilde (delsætningen from) |
Når du bruger den genererede tjenestekontekst og tidlig binding, skal du bruge objektet IQueryable, som f.eks. AccountSet, i den genererede kontekst. Når du ikke bruger den genererede kontekst, giver metoden CreateQuery i organisationens servicekontekstobjekt dig adgang til Microsoft Dynamics 365 objekter. |
Brug af genereret servicekontekst:
Brug af metoden CreateQuery:
|
join-delsætning |
Delsætningen join repræsenterer en indre joinforbindelse. Du kan bruge delsætningen til at arbejde med to eller flere objekter, der kan joinforbindes med en fælles attributværdi. |
|
Filtrering (delsætningen where) |
Delsætningen where gælder for et filter for de resultater, der ofte bruger et boolesk udtryk. Filteret angiver, hvilke elementer der skal udelades fra kildeserien. Hver where-delsætning kan kun indeholde betingelser mod en enkelt objekttype. En sammensat betingelse, der omfatter flere objekter, er ikke gyldig. I stedet skal hvert objekt filtreres i separate where-delsætninger. |
|
orderby |
Operatoren orderby placerer returnerede forespørgselsattributter i en bestemt rækkefølge. |
|
select-delsætning |
Delsætningen select definerer form af data, der returneres. Delsætningen opretter et kolonnesæt, der er baseret på resultaterne af forespørgslens udtryk. Du kan også angive en forekomst af et nyt objekt, der skal arbejdes med. Det nyoprettede objekt, der bruger delsætningen select, oprettes ikke på serveren, men er en lokal forekomst. |
|
LINQ-begrænsninger
LINQ-forespørgselsudbyderen understøtter et undersæt af LINQ-operatorer. Ikke alle betingelser, der kan udtrykkes i LINQ, understøttes. I følgende tabel vises nogle af begrænsningerne i de grundlæggende LINQ-operatorer.
LINQ-operator |
Begrænsninger |
---|---|
join |
Repræsenterer en indre eller ydre joinforbindelse. Der understøttes kun venstre ydre joinforbindelser. |
from |
Understøtter en from-delsætning pr. forespørgsel. |
where |
Venstre side af udtrykket skal være et attributnavn, og højre side af udtrykket skal være en værdi. Du kan ikke angive en konstant i venstre side. Begge sider af udtrykket må ikke være konstanter. Understøtter String-funktionerne Contains, StartsWith, EndsWith og Equals. |
groupBy |
Understøttes ikke. FetchXML understøtter indstillinger for gruppering, der ikke er tilgængelige med udbyderen af LINQ-forespørgsel.Flere oplysninger: Brug af FetchXML-aggregering |
orderBy |
Understøtter sortering af objektattributter, som Contact.FullName. |
select |
Understøtter anonyme typer, konstruktører og initialisering. |
last |
Operatoren last understøttes ikke. |
skip og take |
Understøtter skip og take ved hjælp af serverbaseret sideinddeling. Værdien skip skal være større end eller lig med værdien take. |
aggregate |
Understøttes ikke. FetchXML understøtter indstillinger for aggregering der ikke er tilgængelige med udbyderen af LINQ-forespørgsel.Flere oplysninger: Brug af FetchXML-aggregering |
Filtrer flere objekter
Du kan oprette komplekse .NET-sprogintegreret forespørgsel (LINQ)-forespørgsler i Microsoft Dynamics 365 og Microsoft Dynamics 365 (online). Du kan bruge flere Join-delsætninger med filtreringsdelsætninger til at oprette et resultat, der er filtreret på attributter fra flere objekter.
Følgende eksempel viser, hvordan du opretter en forespørgsel i LINQ, der fungerer med to objekter og filtrerer det resultat, der er baseret på værdier fra hver af objekterne.
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
Se også
Eksempel: Oprettelse af en LINQ-forespørgsel
Eksempel: Komplekse LINQ-forespørgsler
Opret forespørgsler med LINQ (.NET-sprogintegreret forespørgsel)
Brug sent bunden objektklasse med en LINQ-forespørgsel
Blog: LINQPad 4-driver til Dynamics CRM RESTEN/Web API er tilgængelig på CodePlex
Microsoft Dynamics 365
© 2017 Microsoft. Alle rettigheder forbeholdes. Ophavsret