다음을 통해 공유


방법: 투영 작성(LINQ to SQL)

업데이트: November 2007

다음 예제에서는 C#의 select 문과 Visual Basic의 Select 문을 다른 기능과 함께 사용하여 쿼리 투영을 만드는 방법을 보여 줍니다.

예제

다음 예제에서는 Visual Basic의 Select 절(C#의 select 절)을 사용하여 Customers에 대한 연락처 이름의 시퀀스를 반환합니다.

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

다음 예제에서는 Visual Basic의 Select 절(C#의 select 절)과 익명 형식을 사용하여 Customers에 대한 연락처 이름 및 전화 번호의 시퀀스를 반환합니다.

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

다음 예제에서는 Visual Basic의 Select 절(C#의 select 절)과 익명 형식을 사용하여 직원에 대한 이름 및 전화 번호의 시퀀스를 반환합니다. 결과 시퀀스에서 FirstName과 LastName 필드는 단일 필드(Name)로 결합되고 HomePhone 필드는 Phone으로 이름이 변경됩니다.

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

다음 예제에서는 Visual Basic의 Select 절(C#의 select 절)과 익명 형식을 사용하여 모든 ProductID와 HalfPrice라는 계산된 값의 시퀀스를 반환합니다. 이 값은 2로 나누어진 UnitPrice로 설정됩니다.

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

다음 예제에서는 Visual Basic의 Select 절(C#의 select 절)과 조건문을 사용하여 제품 이름과 제품 사용 가능성의 시퀀스를 반환합니다.

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

다음 예제에서는 Visual Basic의 Select 절(C#의 select 절)과 알려진 형식(Name)을 사용하여 직원 이름의 시퀀스를 반환합니다.

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}
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
     };
}

다음 예제에서는 Visual Basic의 Select와 Where(C#의 select와 where)를 사용하여 London에 있는 고객에 대한 연락처 이름의 필터링된 시퀀스를 반환합니다.

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

다음 예제에서는 Visual Basic의 Select 절(C#의 select 절)과 익명 형식을 사용하여 고객에 대한 데이터의 생성된 하위 집합을 반환합니다.

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}
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 }
    };

다음 예제에서는 중첩된 쿼리를 사용하여 다음 결과를 반환합니다.

  • 모든 주문의 시퀀스와 해당 OrderID입니다.

  • 할인이 있는 주문 항목에 대한 시퀀스입니다.

  • 운송 비용이 포함되지 않은 총 금액입니다.

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
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
    };

참고 항목

기타 리소스

쿼리 예제(LINQ to SQL)