Udostępnij za pośrednictwem


Formułowanie projekcji

W poniższych przykładach pokazano, jak select instrukcja w języku C# i Select instrukcja w języku Visual Basic można łączyć z innymi funkcjami w celu tworzenia projekcji zapytań.

Przykład 1

W poniższym przykładzie użyto klauzuli Select w Visual Basic (select klauzula w języku C#), aby zwrócić sekwencję nazw kontaktów dla elementu Customers.

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

Przykład 2

W poniższym przykładzie użyto klauzuli Select w języku Visual Basic (select klauzula w języku C#) i typów anonimowych w celu zwrócenia sekwencji nazw kontaktów i numerów telefonów dla elementu 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

Przykład 3

W poniższym przykładzie użyto klauzuli Select w Visual Basic (select klauzuli w języku C#) i typów anonimowych w celu zwrócenia sekwencji nazw i numerów telefonów dla pracowników. Pola FirstName i LastName są łączone w jedno pole (Name), a HomePhone nazwa pola zostanie zmieniona na Phone w wynikowej sekwencji.

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

Przykład 4

W poniższym przykładzie użyto klauzuli Select w Visual Basic (select klauzuli w języku C#) i typów anonimowych w celu zwrócenia sekwencji wszystkich ProductIDs i wartości obliczeniowej o nazwie HalfPrice. Ta wartość jest ustawiona na wartość podzieloną UnitPrice przez 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

Przykład 5

W poniższym przykładzie użyto klauzuli Select w Visual Basic (select klauzuli w języku C#) i instrukcji warunkowej w celu zwrócenia sekwencji nazwy produktu i dostępności produktu.

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")

Przykład 6

W poniższym przykładzie użyto klauzuli Visual Basic Select (select klauzuli w języku C#) i znanego typu (Name) w celu zwrócenia sekwencji nazw pracowników.

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}

Przykład 7

W poniższym przykładzie użyto elementów Select i Where w języku Visual Basic (select i where w języku C#) w celu zwrócenia odfiltrowanej sekwencji nazw kontaktów dla klientów w Londynie.

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

Przykład 8

W poniższym przykładzie użyto Select klauzuli w Visual Basic (select klauzuli w języku C#) i typów anonimowych w celu zwrócenia ukształtowanego podzestawu danych dotyczących klientów.

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}

Przykład 9

W poniższym przykładzie użyto zagnieżdżonych zapytań w celu zwrócenia następujących wyników:

  • Sekwencja wszystkich zamówień i ich odpowiadających OrderIDim elementów.

  • Podsekwencja elementów w kolejności, dla której istnieje rabat.

  • Kwota pieniędzy oszczędzona, jeśli koszt wysyłki nie jest uwzględniony.

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

Zobacz też