다음 예제에서는 C#의 select
문과 Visual Basic의 Select
문을 다른 기능과 결합하여 질의 프로젝션을 형성하는 방법을 보여 줍니다.
예제 1
다음 예제에서는 Visual Basic의 Select
문(select
C#의 문)을 사용하여 연락처 이름 시퀀스를 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
절(select
C#의 절)과 익명 형식을 사용하여 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
다음 예제에서는 Visual Basic의 Select
절(과 C#의 select
절) 및 익명 형식을 사용하여 직원의 이름과 전화 번호 시퀀스를 반환합니다.
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
선언(select
의 C# 선언) 및 무명 형식을 사용하여 모든 ProductID
s의 시퀀스와 HalfPrice
라는 계산된 값을 반환합니다. 이 값은 2로 나눈 값 UnitPrice
으로 설정됩니다.
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
다음 예제에서는 Visual Basic의 Select
절(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#의 절)과 알려진 형식 (이름)을 사용하여 직원 이름의 시퀀스를 반환합니다.
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
다음 예제에서는 Visual Basic의 Select
절 및 C#의 select
절과 익명 형식을 사용하여 고객에 대한 데이터의 셰이핑된 하위 집합을 반환합니다.
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