下列範例示範在 C# 中的 select 語句和在 Visual Basic 中的 Select 語句如何結合其他功能以形成查詢投影。
範例 1
下列範例會使用 Select 子句在 Visual Basic 中(在 C# 中為 select 子句),以傳回 Customers 的連絡人名稱序列。
var nameQuery =
from cust in db.Customers
select cust.ContactName;
Dim nameQuery = From cust In db.Customers _
Select cust.ContactName
範例 2
下列範例使用 Visual Basic 中的 Select 子句(C# 中的 select 子句)和 匿名型別,來傳回包含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
範例 3
下列範例會使用 Select Visual Basic 中的 子句 (select C# 中的 子句) 和 匿名類型 ,傳回員工的名稱和電話號碼序列。
FirstName 和 LastName 欄位會被合併成單一欄位 (Name),而 HomePhone 欄位會在產生的序列中重新命名為 Phone。
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
範例 4
下列範例使用在 Visual Basic 的 Select 子句(在 C# 的 select 子句)和 匿名型別,傳回所有 ProductID 的序列以及名為 HalfPrice 的計算值。 這個值設定為 UnitPrice 除以 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
範例 5
下列範例會使用 Select Visual Basic 中的 子句 (select C# 中的 子句)和 條件語句 來傳回產品名稱和產品可用性序列。
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")
範例 6
下列範例會使用 Visual Basic Select 子句 (select C# 中的 子句)和 已知的類型 (Name) 傳回員工名稱序列。
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}
範例 7
下列範例會使用 Visual Basic 中的 Select 和 Where,以及 C# 中的 select 和 where,以傳回倫敦客戶的已篩選連絡人名稱序列。
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
範例 8
下列範例使用 Select Visual Basic 中的 子句(select C# 中的 子句)和 匿名類型 ,傳回客戶相關數據的 成形子集 。
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}
範例 9
下列範例會使用巢狀查詢來傳回下列結果:
所有訂單及其對應的
OrderID序列。訂單中有折扣的商品子序列。
如果不包括出貨成本,則省下的金額。
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