Dela via


Formulera projektioner

I följande exempel visas hur -instruktionen i C# och Select -instruktionen select i Visual Basic kan kombineras med andra funktioner för att bilda frågeprojektioner.

Exempel 1

I följande exempel används Select -satsen i Visual Basic (select -satsen i C#) för att returnera en sekvens med kontaktnamn för Customers.

var nameQuery =
    from cust in db.Customers
    select cust.ContactName;
Dim nameQuery = From cust In db.Customers _
                Select cust.ContactName

Exempel 2

I följande exempel används Select satsen i Visual Basic (select -satsen i C#) och anonyma typer för att returnera en sekvens med kontaktnamn och telefonnummer för Customers.

var infoQuery =
    from cust in db.Customers
    select new { cust.ContactName, cust.Phone };
Dim infoQuery = From cust In db.Customers _
                Select cust.ContactName, cust.Phone

Exempel 3

I följande exempel används Select satsen i Visual Basic (select -satsen i C#) och anonyma typer för att returnera en sekvens med namn och telefonnummer för anställda. Fälten FirstName och LastName kombineras till ett enda fält (Name) och fältet HomePhone byts namn till Phone i den resulterande sekvensen.

var info2Query =
    from emp in db.Employees
    select new
    {
        Name = emp.FirstName + " " + emp.LastName,
        Phone = emp.HomePhone
    };
Dim info2Query = From emp In db.Employees _
                 Select Name = emp.FirstName & " " & emp.LastName, _
             Phone = emp.HomePhone

Exempel 4

I följande exempel används Select -satsen i Visual Basic (select -satsen i C#) och anonyma typer för att returnera en sekvens av alla ProductIDoch ett beräknat värde med namnet HalfPrice. Det här värdet anges till UnitPrice dividerat med 2.

var specialQuery =
    from prod in db.Products
    select new { prod.ProductID, HalfPrice = prod.UnitPrice / 2 };
Dim specialQuery = From prod In db.Products _
                   Select prod.ProductID, HalfPrice = CDec(prod.UnitPrice) / 2

Exempel 5

I följande exempel används Select satsen i Visual Basic (select -satsen i C#) och en villkorssats för att returnera en sekvens med produktnamn och produkttillgänglighet.

var prodQuery =
    from prod in db.Products
    select new
    {
        prod.ProductName,
        Availability =
            prod.UnitsInStock - prod.UnitsOnOrder < 0
        ? "Out Of Stock" : "In Stock"
    };
Dim prodQuery = From prod In db.Products _
                Select prod.ProductName, Availability = _
                    If(prod.UnitsInStock - prod.UnitsOnOrder < 0, _
                    "Out Of Stock", "In Stock")

Exempel 6

I följande exempel används en Visual Basic-sats Select (select -sats i C#) och en känd typ (Namn) för att returnera en sekvens med namnen på anställda.

public class Name
{
    public string FirstName = "";
    public string LastName = "";
}

 void empMethod()
 {
 Northwnd db = new Northwnd(@"c:\northwnd.mdf");
 var empQuery =
     from emp in db.Employees
     select new Name
     {
         FirstName = emp.FirstName,
         LastName = emp.LastName
     };
}
Public Class Name
    Public FirstName As String
    Public LastName As String
End Class

Dim db As New Northwnd("c:\northwnd.mdf")
Dim empQuery = From emp In db.Employees _
               Select New Name With {.FirstName = emp.FirstName, .LastName = _
                   emp.LastName}

Exempel 7

I följande exempel används Select och Where i Visual Basic (select och where i C#) för att returnera en filtrerad sekvens med kontaktnamn för kunder i London.

var contactQuery =
    from cust in db.Customers
    where cust.City == "London"
    select cust.ContactName;
Dim contactQuery = _
    From cust In db.Customers _
    Where cust.City = "London" _
    Select cust.ContactName

Exempel 8

I följande exempel används en Select sats i Visual Basic (select -satsen i C#) och anonyma typer för att returnera en formad delmängd av data om kunder.

var custQuery =
    from cust in db.Customers
    select new
    {
        cust.CustomerID,
        CompanyInfo = new { cust.CompanyName, cust.City, cust.Country },
        ContactInfo = new { cust.ContactName, cust.ContactTitle }
    };
Dim custQuery = From cust In db.Customers _
                Select cust.CustomerID, CompanyInfo = New With {cust.CompanyName, _
                    cust.City, cust.Country}, ContactInfo = _
                    New With {cust.ContactName, cust.ContactTitle}

Exempel 9

I följande exempel används kapslade frågor för att returnera följande resultat:

  • En sekvens av alla beställningar och deras motsvarande OrderID.

  • En delmängd av objekten i den ordning som det finns en rabatt.

  • Mängden pengar som sparas om kostnaden för frakt inte ingår.

var ordQuery =
    from ord in db.Orders
    select new
    {
        ord.OrderID,
        DiscountedProducts =
            from od in ord.OrderDetails
            where od.Discount > 0.0
            select od,
        FreeShippingDiscount = ord.Freight
    };
Dim ordQuery = From ord In db.Orders _
               Select ord.OrderID, DiscountedProducts = _
               (From od In ord.OrderDetails _
                Where od.Discount > 0.0 _
                Select od), _
           FreeShippingDiscount = ord.Freight

Se även