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 ProductID
s 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
OrderID
im 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