Delen via


Voorbeelden van LINQ-query's

 

Gepubliceerd: januari 2017

Is van toepassing op: Dynamics 365 (online), Dynamics 365 (on-premises), Dynamics CRM 2016, Dynamics CRM Online

Dit onderwerp bevat veel voorbeelden van LINQ-query's. Voor het volledige voorbeeld zie Voorbeeld: Complexe LINQ-query's.

In dit onderwerp

Eenvoudige Where-clausule

Join en eenvoudige Where-clausule

De operator Distinct gebruiken

Eenvoudige inner join

Self-join

Dubbele en meervoudige joins

Join met entiteitsvelden

Linker join met late binding

De operator Equals gebruiken

De operator Not Equals gebruiken

Een methodegebaseerde LINQ-query met een Where-clausule gebruiken

De operator groter dan gebruiken

De operatoren groter dan of is gelijk aan, en kleiner dan of is gelijk aan gebruiken

De operator Contains gebruiken

De operator Does Not Contain gebruiken

De operatoren StartsWith en EndsWith gebruiken

De operatoren And en Or gebruiken

De operator OrderBy gebruiken

De operatoren First and Single gebruiken

Opgemaakte waarden ophalen

De operatoren Skip en Take gebruiken zonder paging

De operatoren FirstOrDefault en SingleOrDefault gebruiken

Een zelf-join gebruiken met een voorwaarde voor de gekoppelde entiteit

Een transformatie gebruiken in de Where-clausule

Een pagingsortering gebruiken

Gerelateerde entiteitkolommen ophalen voor 1 op N-relaties

.Value gebruiken om de waarde van een kenmerk op te halen

Meerdere projecties, nieuwe conversie van gegevenstypen naar andere typen

De methode GetAttributeValue gebruiken

Wiskundige methoden gebruiken

Meerdere Select- en Where-clausules gebruiken

SelectMany gebruiken

Tekenreeksbewerkingen gebruiken

Twee Where-clausules gebruiken

LoadProperty gebruiken om gerelateerde records op te halen

Eenvoudige Where-clausule

Het volgende voorbeeld laat zien hoe u een lijst met accounts ophaalt waarbij de Name "Contoso" bevat.


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

Het volgende voorbeeld laat zien hoe u een lijst met accounts ophaalt waarbij de Name "Contoso" bevat en Address1_City “Redmond” is.


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

Join en eenvoudige Where-clausule

Het volgende voorbeeld toont hoe u het account Name en de contactpersoon LastName ophaalt waarvan het account Name "Contoso" bevat, de contactpersoon LastName "Smith" bevat en de contactpersoon de primaire contactpersoon voor de account is.


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

De operator Distinct gebruiken

Het volgende voorbeeld laat zien hoe u een verschillende lijst met achternamen van contactpersonen ophaalt. Hoewel er dubbele records kunnen zijn, wordt elke naam slechts eenmaal weergegeven.


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

Eenvoudige inner join

Het volgende voorbeeld laat zien hoe u gegevens over een account ophaalt en de contactpersoon ophaalt die als de primaire contactpersoon wordt genoemd voor het account.


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

Self-join

Dit voorbeeld laat zien hoe u gegevens over accounts ophaalt waarbij het account het bovenliggende account van een account is.


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

Dubbele en meervoudige joins

Het volgende voorbeeld toont hoe u gegevens ophaalt van een account, contactpersoon en potentiële klant waarbij de contactpersoon de primaire contactpersoon van het account is en de potentiële klant de oorspronkelijke potentiële klant van het account is.


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

Het volgende voorbeeld toont hoe u account- en contactpersoongegevens ophaalt waarbij het account het bovenliggende account van een account is en de contactpersoon de primaire contactpersoon van het account is.


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

Join met entiteitsvelden

Het volgende voorbeeld laat zien hoe u gegevens over accounts ophaalt uit een lijst


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

Linker join met late binding

De volgende voorbeelden tonen een linker join Een linker join is ontworpen om bovenliggende elementen met en zonder onderliggende elementen uit twee bronnen als resultaat te geven. Er is een correlatie tussen het bovenliggende en het onderliggende element, maar er mag niet echt een onderliggend element bestaan.


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

De operator Equals gebruiken

Het volgende voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt waarbij de FirstName "Colin" is.


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

Het volgende voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt waarbij de FamilyStatusCode 3 is. Dit komt overeen met de optie Gescheiden bij Burgerlijke staat.


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

De operator Not Equals gebruiken

Het volgende voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt waarbij de Address1_City niet "Redmond" is.


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

Het volgende voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt waarbij de FirstName niet "Colin" is.


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

Een methodegebaseerde LINQ-query met een Where-clausule gebruiken

Het volgende voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt waarbij de LastName "Smith" is of "Smi" bevat.


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

De operator groter dan gebruiken

Dit voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt met een Anniversary-datum die later ligt dan 5 februari 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

Dit voorbeeld laat zien hoe u contactpersonen ophaalt met een CreditLimit die groter is dan $ 20.000.


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

De operatoren groter dan of is gelijk aan, en kleiner dan of is gelijk aan gebruiken

Dit voorbeeld laat zien hoe u contactpersonen ophaalt met een CreditLimit die groter is dan $ 200 en kleiner is dan $ 400.


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 &amp; " " &amp; c.LastName)
 Next c
End Using

De operator Contains gebruiken

Het volgende voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt waarbij de Description "Alpine" bevat.


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 &amp; " " &amp; c.LastName)
 Next c
End Using

De operator Does Not Contain gebruiken

Het volgende voorbeeld laat zien hoe u een lijst met contactpersonen ophaalt waarbij de Description niet "Coho" bevat.


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() &amp; " " _
                    &amp; c.LastName.ToString())
 Next c
End Using

De operatoren StartsWith en EndsWith gebruiken

Dit voorbeeld laat zien hoe u contactpersonen ophaalt met een FirstName die begint met "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() &amp; " " _
                    &amp; c.LastName.ToString())
 Next c
End Using

Dit voorbeeld laat zien hoe u contactpersonen ophaalt met een LastName die eindigt met "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() &amp; " " _
                    &amp; c.LastName.ToString())
 Next c
End Using

De operatoren And en Or gebruiken

In het volgende voorbeeld ziet u hoe u contactpersonen kunt ophalen waarvan Address1_City "Redmond" of "Bellevue" is en die een CreditLimit hebben die groter is dan $ 200.


using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
 var query_andor1 = from c in svcContext.ContactSet
                    where ((c.Address1_City == "Redmond" ||
                    c.Address1_City == "Bellevue") &amp;&amp;
                    (c.CreditLimit.Value != null &amp;&amp;
                    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() &amp; ", " _
                    &amp; c.FirstName.ToString() &amp; " " _
                    &amp; c.Address1_City.ToString() &amp; " " _
                    &amp; c.CreditLimit.Value.ToString())
 Next c
End Using

De operator OrderBy gebruiken

In het volgende voorbeeld ziet u hoe u contactpersonen ophaalt, in aflopende volgorde geordend op CreditLimit.


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 &amp; " " &amp; c.last &amp; ", " _
                    &amp; c.first)
 Next c
End Using

In het volgende voorbeeld ziet u hoe u contactpersonen ophaalt, in aflopende volgorde geordend op LastName en in oplopende volgorde geordend op FirstName.


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 &amp; ", " &amp; c.first)
 Next c
End Using

De operatoren First and Single gebruiken

Dit voorbeeld laat zien hoe u alleen het eerste contactpersoonrecord ophaalt dat als resultaat wordt gegeven en hoe u slechts één contactpersoonrecord ophaalt dat aan het criterium voldoet.


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 &amp; ", " _
                   &amp; firstcontact.FirstName _
                   &amp; " is the first contact")
 Console.WriteLine("==========================")
 Dim singlecontact As Contact =
     svcContext.ContactSet _
     .Single(Function(c) c.ContactId.Value.Equals(_contactId1))
 Console.WriteLine(singlecontact.LastName &amp; ", " _
                   &amp; singlecontact.FirstName _
                   &amp; " is the single contact")
End Using

Opgemaakte waarden ophalen

In het volgende voorbeeld ziet u hoe u het label ophaalt voor een optionsetoptie, in dit geval de waarde van de huidige recordstatus.


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: " &amp; c.StatusReason)
 Next c
End Using

De operatoren Skip en Take gebruiken zonder paging

In het volgende voorbeeld ziet u hoe u slechts twee records ophaalt nadat twee records waarvan de LastName niet "Parker" is, zijn overgeslagen met de operatoren Skip en 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 &amp; " " &amp; c.last)
 Next c
End Using

De operatoren FirstOrDefault en SingleOrDefault gebruiken

De operator FirstOrDefault geeft het eerste element als resultaat van een reeks of een standaardwaarde als er geen element wordt gevonden. De operator SingleOrDefault geeft één specifiek element als resultaat van een reeks of een standaardwaarde als dat element niet wordt gevonden. In het volgende voorbeeld ziet u hoe u deze operatoren gebruikt


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 &amp; " is the first contact")

 Console.WriteLine("==========================")
 Dim singleorcontact As Contact =
     svcContext.ContactSet _
     .SingleOrDefault(Function(c) c.ContactId.Value.Equals(_contactId1))
 Console.WriteLine(singleorcontact.FullName &amp; " is the single contact")
End Using

Een zelf-join gebruiken met een voorwaarde voor de gekoppelde entiteit

Dit voorbeeld laat zien hoe u de namen van twee accounts ophaalt, waarbij het ene account het bovenliggende account van het andere is.


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 &amp; " " &amp; a.Parent.Name)
 Next a
End Using

Een transformatie gebruiken in de Where-clausule

Dit voorbeeld laat zien hoe u een specifieke contactpersoon ophaalt van wie de verjaardag later ligt dan 1 januari 2010.


using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
 var query_wheretrans = from c in svcContext.ContactSet
                        where c.ContactId == _contactId1 &amp;&amp;
                        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 &amp; " " &amp; c.LastName)
 Next c
End Using

Een pagingsortering gebruiken

Dit voorbeeld laat een sortering van meerdere kolommen met een extra voorwaarde zien.


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 &amp; " " &amp; c.LastName)
 Next c
End Using

Dit voorbeeld laat een pagingsortering zien waarbij de kolom die wordt gesorteerd, afwijkt van de kolom die wordt opgehaald.


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

In het volgende voorbeeld ziet u hoe u alleen de eerste tien records ophaalt.


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 &amp; " " &amp; c.MiddleName &amp; " " &amp; c.LastName)
 Next c
End Using

Gerelateerde entiteitkolommen ophalen voor 1 op N-relaties

Dit voorbeeld laat zien hoe u kolommen uit gerelateerde accounts en contactpersoonrecords ophaalt.


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: " &amp; c.Account.Name &amp; vbTab &amp; vbTab _
                    &amp; "Contact: " &amp; c.Contact.FullName)
 Next c
End Using

.Value gebruiken om de waarde van een kenmerk op te halen

Het volgende voorbeeld toont hoe u Value gebruikt om toegang te krijgen tot de waarde van een kenmerk.


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() &amp; " " _
                    &amp; c.NumberOfChildren &amp; " " _
                    &amp; c.CreditOnHold &amp; " " &amp; c.Anniversary)
 Next c
End Using

Meerdere projecties, nieuwe conversie van gegevenstypen naar andere typen

In het volgende voorbeeld ziet u verschillende projecties en hoe u waarden naar een ander type converteert.


using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
 var query_projections = from c in svcContext.ContactSet
                         where c.ContactId == _contactId1
                         &amp;&amp; c.NumberOfChildren != null &amp;&amp; 
                         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 &amp; " " &amp; c.NumberOfChildren _
                    &amp; " " &amp; c.Anniversary)
 Next c
End Using

De methode GetAttributeValue gebruiken

In het volgende voorbeeld ziet u hoe u de methode GetAttributeValue<T> gebruikt.


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() &amp; " " _
                    &amp; c.NumberOfChildren &amp; " " &amp; c.CreditOnHold _
                    &amp; " " &amp; c.Anniversary)
 Next c
End Using

Wiskundige methoden gebruiken

In het volgende voorbeeld ziet u hoe u verschillende Math-methoden gebruikt.


using (ServiceContext svcContext = new ServiceContext(_serviceProxy))
{
 var query_math = from c in svcContext.ContactSet
                  where c.ContactId != _contactId2
                  &amp;&amp; c.Address1_Latitude != null &amp;&amp; 
                  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 &amp; " " &amp; c.Floor &amp; " " _
                    &amp; c.Ceiling &amp; " " &amp; c.Abs)
 Next c
End Using

Meerdere Select- en Where-clausules gebruiken

In dit voorbeeld ziet u meerdere Select- en Where-clausules met een methodegebaseerde querysyntaxis.


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

SelectMany gebruiken

In het volgende voorbeeld ziet u hoe u de methode SelectMany gebruikt.


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() &amp; " " &amp; c.Name)
 Next c
End Using

Tekenreeksbewerkingen gebruiken

In het volgende voorbeeld ziet u hoe u verschillende tekenreeksmethoden gebruikt.


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 &amp; vbLf &amp; c.Insert &amp; vbLf _
                    &amp; c.Remove &amp; vbLf &amp; c.Substring &amp; vbLf _
                    &amp; c.ToUpper &amp; vbLf &amp; c.ToLower &amp; vbLf _
                    &amp; c.TrimStart &amp; " " &amp; c.TrimEnd)
 Next c
End Using

Twee Where-clausules gebruiken

In het volgende voorbeeld ziet u hoe u twee Where-clausules gebruikt.


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" &amp;&amp; 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() &amp; " " &amp; c.Name)
 Next c
End Using

LoadProperty gebruiken om gerelateerde records op te halen

In het volgende voorbeeld ziet u hoe u LoadProperty gebruikt om toegang te krijgen tot gerelateerde records.


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);
 }
}

Zie ook

Query's maken met LINQ (.NET Language Integrated Query)
Voorbeeld: Een LINQ-query maken

Microsoft Dynamics 365

© 2017 Microsoft. Alle rechten voorbehouden. Auteursrecht