LINQ-Abfragebeispiele
Veröffentlicht: November 2016
Gilt für: Dynamics CRM 2015
Dieses Thema enthält viele Beispiele für LINQ-Abfragen. Das vollständige Beispiel finden Sie unter Beispiel: Komplexe LINQ-Abfragen.
In diesem Thema
Einfache Wobei-Klausel
Verknüpfung und einfache und Wobei-Klausel
Verwenden des eindeutigen Operators
Einfache innere Verknüpfung
Selbstverknüpfung
Doppelte und mehrere Verknüpfungen
Verknüpfen unter Verwendung von Entitätsfeldern
Links-Verknüpfung mit später Bindung
Verwenden des Gleich-Operators
Verwenden des Ungleich-Operators
Verwenden einer methodenbasierten LINQ-Abfrage mit einer Wobei-Klausel
Verwenden des Größer-als-Operators
Verwenden der Größer als- oder Gleich- oder Kleiner als-Operatoren
Verwenden des Enthält-Operators
Verwenden des Enthält nicht-Operators
Verwenden der StartsWith- und EndsWith-Operatoren
Verwenden der Und- und Oder-Operatoren
Verwenden des OrderBy-Operators
Verwenden der Erster- und Einziger-Operatoren
Abrufen von formatierten Werten
Verwenden der Operatoren Auslassen und Nehmen ohne Paging
Verwenden der Operatoren FirstOrDefault und SingleOrDefault
Verwenden einer Selbstverknüpfung mit einer Bedingung für die verknüpfte Entität
Verwenden von Transformationen in der Wobei-Klausel
Verwenden einer Paging-Sortierung
Abrufen von verknüpften Entitätsspalten für 1:N-Beziehungen
Verwendung von Wert, um den Wert eines Attributs abzufen
Mehrere Projektionen, Neuer Datentyp, der zu verschiedenen Typen umgewandelt wird
Verwenden der GetAttributeValue-Methode
Verwendung von mathematischen Methoden
Verwendung von Mehrfachauswahl- und Wobei-Klauseln
Verwendung von SelectMany
Verwendung von Zeichenfolgenoperationen
Verwendung von zwei Wobei-Klauseln
Verwendung von LoadProperty, um verwandte Datensätze abzurufen
Einfache Wobei-Klausel
Das folgende Beispiel zeigt, wie Sie eine Liste von Konten abrufen, wobei Name "Contoso" enthält.
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
Das folgende Beispiel zeigt, wie Sie eine Liste von Konten abrufen, wobei Name "Contoso" und Address1_City "Redmond" ist.
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
Verknüpfung und einfache und Wobei-Klausel
Das folgende Beispiel zeigt, wie die Firma Name und der Kontakt LastName abgerufen werden, wobei die Firma Name "Contoso" enthält, und der Kontakt LastName "Smith" enthält, und der Kontakt der primäre Kontakt für die Firma ist.
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
Verwenden des eindeutigen Operators
Das folgende Beispiel zeigt, wie Sie eine eindeutige Liste von Kontaktnachnamen abrufen. Obwohl es möglicherweise viele Duplikate gibt, wird jeder Name nur einmal aufgelistet.
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
Einfache innere Verknüpfung
Das folgende Beispiel zeigt, wie Informationen zu einer Firma und dem Kontakt, der als primärer Kontakt für die Firma aufgelistet ist, abgerufen werden.
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
Selbstverknüpfung
Das folgende Beispiel zeigt, wie Informationen zu Firmen abgerufen werden, wobei eine Firma die übergeordnete Firma für eine Firma ist.
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
Doppelte und mehrere Verknüpfungen
Das folgende Beispiel zeigt, wie die Informationen von Firma, Kontakt und Lead abgerufen werden, wobei der Kontakt der primäre Kontakt für die Firma ist und der Lead der Ursprungslead für die firma war.
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
Das folgende Beispiel zeigt, wie die Informationen Firmen- und Kontaktinformationen abgerufen werden, wobei die Firma die übergeordnete Firma einer Firma ist und der Kontakt der primäre Kontakt für die Firma ist.
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
Verknüpfen unter Verwendung von Entitätsfeldern
Das folgende Beispiel zeigt, wie Sie Informationen über Firmen aus einer Liste abrufen
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
Links-Verknüpfung mit später Bindung
Das folgende Beispiel zeigt eine Linksverknüpfung. Eine Linksverknüpfung ist so ausgelegt, dass übergeordnete Elemente mit und ohne untergeordnete Elemente von zwei Quellen zurückgegeben werden. Es gibt eine Korrelation zwischen übergeordnetem und untergeordnetem Element, aber ein untergeordnetes Element kann nicht vorhanden sein.
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
Verwenden des Gleich-Operators
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten abrufen, wobei FirstName "Colin" ist.
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
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten abrufen, wobei FamilyStatusCode „3” ist. Dieses entspricht der Familienstand-Option Geschieden.
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
Verwenden des Ungleich-Operators
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten abrufen, wobei Address1_City nicht "Redmond" ist.
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
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten abrufen, wobei FirstName nicht "Colin" ist.
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
Verwenden einer methodenbasierten LINQ-Abfrage mit einer Wobei-Klausel
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten abrufen, wobei LastName "Smith" ist oder "Colin" enthält.
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
Verwenden des Größer-als-Operators
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten mit einem Anniversary Datum später als 5. Februar 2010 abrufen.
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
Das folgende Beispiel zeigt, wie Sie Kontakte mit einem CreditLimit von mehr als $20.000 abrufen.
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
Verwenden der Größer als- oder Gleich- oder Kleiner als-Operatoren
Das folgende Beispiel zeigt, wie Sie Kontakte mit einem CreditLimit von mehr als $200 und weniger als $400 abrufen.
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
Verwenden des Enthält-Operators
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten abrufen, wobei Description "Alpine" enhält.
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
Verwenden des Enthält nicht-Operators
Das folgende Beispiel zeigt, wie Sie eine Liste von Kontakten abrufen, wobei Description "Coho" nicht enhält.
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
Verwenden der StartsWith- und EndsWith-Operatoren
Das folgende Beispiel zeigt, wie Sie Kontakte abrufen, wobei FirstName mit "Bri" beginnt.
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
Das folgende Beispiel zeigt, wie Sie Kontakte abrufen, wobei LastName mit "cox" endet.
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
Verwenden der Und- und Oder-Operatoren
Das folgende Beispiel zeigt, wie Sie Kontakte abrufen, wobei Address1_City "Redmond" oder "Bellevue" ist, und eine CreditLimit, die größer als $200 ist.
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
Verwenden des OrderBy-Operators
Das folgende Beispiel zeigt, wie die Kontakte abgerufen werden, die in absteigender Reihenfolge nach CreditLimit angeordnet sind.
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
Das folgende Beispiel zeigt, wie die Kontakte abgerufen werden, die in absteigender Reihenfolge nach LastName und in aufsteigender Reihenfolge nach FirstName angeordnet sind.
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
Verwenden der Erster- und Einziger-Operatoren
Das folgende Beispiel zeigt, wie Sie nur den ersten zurückgegebenen Kontaktdatensatz abrufen, und nur einen Kontaktdatensatz abrufen, der mit dem Kriterium übereinstimmt.
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
Abrufen von formatierten Werten
Das folgende Beispiel zeigt, wie Sie eine Beschriftung für eine Optionssatz-Option abrufen, in diesem Fall den Wert für aktuellen Status des Datensatzes.
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
Verwenden der Operatoren Auslassen und Nehmen ohne Paging
Das folgende Beispiel zeigt, wie nur zwei Datensätze abgerufen werden, nachdem zwei Datensätze übersprungen wurden, in denen LastName nicht "Parker" ist, mithilfe der Operatoren èberspringen und Nehmen.
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
Verwenden der Operatoren FirstOrDefault und SingleOrDefault
Der FirstOrDefault-Operator gibt das erste Element einer Sequenz zurück, oder einen Standardwert, wenn kein Element gefunden wird. Der SingleOrDefault-Operator gibt ein einzelnes, spezifisches Element einer Sequenz zurück, oder einen Standardwert, wenn dieses Element nicht gefunden wird. Im folgenden Beispiel wird gezeigt, wie diese Operatoren verwendet werden.
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
Verwenden einer Selbstverknüpfung mit einer Bedingung für die verknüpfte Entität
Das folgende Beispiel zeigt, wie die Namen von zwei Firmen abgerufen werden, wobei eine Firma die übergeordnete Firma der anderen ist.
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
Verwenden von Transformationen in der Wobei-Klausel
Das folgende Beispiel zeigt, wie Sie einen bestimmten Kontakt abrufen, bei dem das Jahrestagsdatum später ist als der 1. Januar 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
Verwenden einer Paging-Sortierung
Das folgende Beispiel zeigt eine mehrspaltige Sortierung mit einer Sonderbedingung.
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
Das folgende Beispiel eine Paging-Sortierung, wobei die Spalte, die sortiert wird, sich von der Spalte unterscheidet, die abgerufen wird.
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
Das folgende Beispiel zeigt, wie Sie nur die ersten 10 Datensätze abrufen.
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
Abrufen von verknüpften Entitätsspalten für 1:N-Beziehungen
Das folgende Beispiel zeigt, wie Spalten von verknüpften Firmen- und Kontaktdatensätzen abgerufen werden.
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
Verwendung von Wert, um den Wert eines Attributs abzufen
Im folgenden Beispiel wird das Verwenden eines Werts zum Zugriff auf den Wert eines Attributs gezeigt.
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
Mehrere Projektionen, Neuer Datentyp, der zu verschiedenen Typen umgewandelt wird
Das folgende Beispiel zeigt mehrere Projektionen, und wie Werte in einen anderen Typ umgewandelt werden.
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
Verwenden der GetAttributeValue-Methode
Im folgenden Beispiel wird gezeigt, wie die GetAttributeValue<T>-Methode verwendet wird.
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
Verwendung von mathematischen Methoden
Im folgenden Beispiel wird gezeigt, wie verschiedene Mathematische Methoden verwendet werden.
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
Verwendung von Mehrfachauswahl- und Wobei-Klauseln
Das folgende Beispiel zeigt Mehrfachauswahl- und Wobei-Klauseln unter Verwendung einer methodenbasierten Abfragensyntax.
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
Verwendung von SelectMany
Im folgenden Beispiel wird gezeigt, wie die SelectMany-Methode verwendet wird.
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
Verwendung von Zeichenfolgenoperationen
Im folgenden Beispiel wird gezeigt, wie verschiedene Zeichenfolge-Methoden verwendet werden.
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
Verwendung von zwei Wobei-Klauseln
Im folgenden Beispiel wird gezeigt, wie zwei Wobei-Klauseln verwendet werden.
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
Verwendung von LoadProperty, um verwandte Datensätze abzurufen
Das folgende Beispiel zeigt, wie LoadProperty verwendet wird, um auf verandte Datensätze zuzugreifen.
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);
}
}
Siehe auch
Erstellen von Abfragen mit LINQ (.NET language-integrated query)
Beispiel: Erstellen einer LINQ-Abfrage
© 2017 Microsoft. Alle Rechte vorbehalten. Copyright